Skip to content

Commit 50107ba

Browse files
Locharla, SandeepLocharla, Sandeep
authored andcommitted
Addressed final set of comments
1 parent 96e42a9 commit 50107ba

File tree

15 files changed

+804
-217
lines changed

15 files changed

+804
-217
lines changed

.github/CODEOWNERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
/plugins/storage/volume/linstor @rp-
1919
/plugins/storage/volume/storpool @slavkap
20+
/plugins/storage/volume/ontap @rajiv1 @sandeeplocharla @piyush5 @suryag
2021

2122
.pre-commit-config.yaml @jbampton
2223
/.github/linters/ @jbampton

plugins/storage/volume/ontap/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
<junit-jupiter.version>5.8.1</junit-jupiter.version>
4040
<mockito.version>3.12.4</mockito.version>
4141
<mockito-junit-jupiter.version>5.2.0</mockito-junit-jupiter.version>
42+
<commons-lang3.version>3.12.0</commons-lang3.version>
4243
</properties>
4344
<dependencyManagement>
4445
<dependencies>
@@ -92,6 +93,11 @@
9293
<artifactId>swagger-annotations</artifactId>
9394
<version>${swagger-annotations.version}</version>
9495
</dependency>
96+
<dependency>
97+
<groupId>org.apache.commons</groupId>
98+
<artifactId>commons-lang3</artifactId>
99+
<version>${commons-lang3.version}</version>
100+
</dependency>
95101
<!-- JUnit 5 -->
96102
<dependency>
97103
<groupId>org.junit.jupiter</groupId>

plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/driver/OntapPrimaryDatastoreDriver.java

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,11 @@
4545

4646
public class OntapPrimaryDatastoreDriver implements PrimaryDataStoreDriver {
4747

48-
private static final Logger s_logger = LogManager.getLogger(OntapPrimaryDatastoreDriver.class);
48+
private static final Logger logger = LogManager.getLogger(OntapPrimaryDatastoreDriver.class);
4949

5050
@Override
5151
public Map<String, String> getCapabilities() {
52-
s_logger.trace("OntapPrimaryDatastoreDriver: getCapabilities: Called");
52+
logger.trace("OntapPrimaryDatastoreDriver: getCapabilities: Called");
5353
Map<String, String> mapCapabilities = new HashMap<>();
5454
mapCapabilities.put(DataStoreCapabilities.STORAGE_SYSTEM_SNAPSHOT.toString(), Boolean.FALSE.toString());
5555
mapCapabilities.put(DataStoreCapabilities.CAN_CREATE_VOLUME_FROM_SNAPSHOT.toString(), Boolean.FALSE.toString());
@@ -63,27 +63,39 @@ public DataTO getTO(DataObject data) {
6363
}
6464

6565
@Override
66-
public DataStoreTO getStoreTO(DataStore store) { return null; }
66+
public DataStoreTO getStoreTO(DataStore store) {
67+
return null;
68+
}
6769

6870
@Override
69-
public void createAsync(DataStore dataStore, DataObject dataObject, AsyncCompletionCallback<CreateCmdResult> callback) {}
71+
public void createAsync(DataStore dataStore, DataObject dataObject, AsyncCompletionCallback<CreateCmdResult> callback) {
72+
throw new UnsupportedOperationException("Create operation is not supported for ONTAP primary storage.");
73+
}
7074

7175
@Override
72-
public void deleteAsync(DataStore store, DataObject data, AsyncCompletionCallback<CommandResult> callback) {}
76+
public void deleteAsync(DataStore store, DataObject data, AsyncCompletionCallback<CommandResult> callback) {
77+
throw new UnsupportedOperationException("Delete operation is not supported for ONTAP primary storage.");
78+
}
7379

7480
@Override
75-
public void copyAsync(DataObject srcData, DataObject destData, AsyncCompletionCallback<CopyCommandResult> callback) {}
81+
public void copyAsync(DataObject srcData, DataObject destData, AsyncCompletionCallback<CopyCommandResult> callback) {
82+
throw new UnsupportedOperationException("Copy operation is not supported for ONTAP primary storage.");
83+
}
7684

7785
@Override
78-
public void copyAsync(DataObject srcData, DataObject destData, Host destHost, AsyncCompletionCallback<CopyCommandResult> callback) {}
86+
public void copyAsync(DataObject srcData, DataObject destData, Host destHost, AsyncCompletionCallback<CopyCommandResult> callback) {
87+
throw new UnsupportedOperationException("Copy operation is not supported for ONTAP primary storage.");
88+
}
7989

8090
@Override
8191
public boolean canCopy(DataObject srcData, DataObject destData) {
8292
return false;
8393
}
8494

8595
@Override
86-
public void resize(DataObject data, AsyncCompletionCallback<CreateCmdResult> callback) {}
96+
public void resize(DataObject data, AsyncCompletionCallback<CreateCmdResult> callback) {
97+
throw new UnsupportedOperationException("Resize operation is not supported for ONTAP primary storage.");
98+
}
8799

88100
@Override
89101
public ChapInfo getChapInfo(DataObject dataObject) {
@@ -119,10 +131,14 @@ public long getUsedIops(StoragePool storagePool) {
119131
}
120132

121133
@Override
122-
public void takeSnapshot(SnapshotInfo snapshot, AsyncCompletionCallback<CreateCmdResult> callback) {}
134+
public void takeSnapshot(SnapshotInfo snapshot, AsyncCompletionCallback<CreateCmdResult> callback) {
135+
throw new UnsupportedOperationException("Snapshot operation is not supported for ONTAP primary storage.");
136+
}
123137

124138
@Override
125-
public void revertSnapshot(SnapshotInfo snapshotOnImageStore, SnapshotInfo snapshotOnPrimaryStore, AsyncCompletionCallback<CommandResult> callback) {}
139+
public void revertSnapshot(SnapshotInfo snapshotOnImageStore, SnapshotInfo snapshotOnPrimaryStore, AsyncCompletionCallback<CommandResult> callback) {
140+
throw new UnsupportedOperationException("Snapshot operation is not supported for ONTAP primary storage.");
141+
}
126142

127143
@Override
128144
public void handleQualityOfServiceForVolumeMigration(VolumeInfo volumeInfo, QualityOfServiceState qualityOfServiceState) {}

plugins/storage/volume/ontap/src/main/java/org/apache/cloudstack/storage/feign/FeignConfiguration.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public class FeignConfiguration {
5252
private static final Logger logger = LogManager.getLogger(FeignConfiguration.class);
5353

5454
private final int retryMaxAttempt = 3;
55-
private final int retryMaxInterval = 5;
55+
private final int retryMaxIntervalInSecs = 5;
5656
private final String ontapFeignMaxConnection = "80";
5757
private final String ontapFeignMaxConnectionPerRoute = "20";
5858
private final ObjectMapper objectMapper;
@@ -110,7 +110,7 @@ public RequestInterceptor createRequestInterceptor() {
110110
}
111111

112112
public Retryer createRetryer() {
113-
return new Retryer.Default(1000L, retryMaxInterval * 1000L, retryMaxAttempt);
113+
return new Retryer.Default(1000L, retryMaxIntervalInSecs * 1000L, retryMaxAttempt);
114114
}
115115

116116
public Encoder createEncoder() {
Lines changed: 182 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one
3+
* or more contributor license agreements. See the NOTICE file
4+
* distributed with this work for additional information
5+
* regarding copyright ownership. The ASF licenses this file
6+
* to you under the Apache License, Version 2.0 (the
7+
* "License"); you may not use this file except in compliance
8+
* with the License. You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing,
13+
* software distributed under the License is distributed on an
14+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
* KIND, either express or implied. See the License for the
16+
* specific language governing permissions and limitations
17+
* under the License.
18+
*/
19+
20+
package org.apache.cloudstack.storage.feign.model;
21+
22+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
23+
import com.fasterxml.jackson.annotation.JsonInclude;
24+
import com.fasterxml.jackson.annotation.JsonProperty;
25+
import org.apache.cloudstack.utils.reflectiontostringbuilderutils.ReflectionToStringBuilderUtils;
26+
import java.util.List;
27+
28+
/**
29+
* ExportRule
30+
*/
31+
@JsonIgnoreProperties(ignoreUnknown = true)
32+
@JsonInclude(JsonInclude.Include.NON_NULL)
33+
public class ExportRule {
34+
@JsonProperty("anonymous_user")
35+
private String anonymousUser ;
36+
37+
@JsonProperty("clients")
38+
private List<ExportClient> clients = null;
39+
40+
@JsonProperty("index")
41+
private Integer index = null;
42+
43+
public enum ProtocolsEnum {
44+
ANY("any"),
45+
46+
NFS("nfs"),
47+
48+
NFS3("nfs3"),
49+
50+
NFS4("nfs4");
51+
52+
private String value;
53+
54+
ProtocolsEnum(String value) {
55+
this.value = value;
56+
}
57+
58+
public String getValue() {
59+
return value;
60+
}
61+
62+
@Override
63+
public String toString() {
64+
return String.valueOf(value);
65+
}
66+
67+
public static ProtocolsEnum fromValue(String text) {
68+
for (ProtocolsEnum b : ProtocolsEnum.values()) {
69+
if (String.valueOf(b.value).equals(text)) {
70+
return b;
71+
}
72+
}
73+
return null;
74+
}
75+
}
76+
77+
@JsonProperty("protocols")
78+
private List<ProtocolsEnum> protocols = null;
79+
80+
@JsonProperty("ro_rule")
81+
private List<String> roRule = null;
82+
83+
@JsonProperty("rw_rule")
84+
private List<String> rwRule = null;
85+
86+
@JsonProperty("superuser")
87+
private List<String> superuser = null;
88+
89+
90+
public ExportRule anonymousUser(String anonymousUser) {
91+
this.anonymousUser = anonymousUser;
92+
return this;
93+
}
94+
95+
public String getAnonymousUser() {
96+
return anonymousUser;
97+
}
98+
99+
public void setAnonymousUser(String anonymousUser) {
100+
this.anonymousUser = anonymousUser;
101+
}
102+
103+
public ExportRule clients(List<ExportClient> clients) {
104+
this.clients = clients;
105+
return this;
106+
}
107+
108+
public List<ExportClient> getClients() {
109+
return clients;
110+
}
111+
112+
public void setClients(List<ExportClient> clients) {
113+
this.clients = clients;
114+
}
115+
116+
public Integer getIndex() {
117+
return index;
118+
}
119+
public void setIndex(Integer index)
120+
{
121+
this.index=index;
122+
}
123+
124+
public ExportRule protocols(List<ProtocolsEnum> protocols) {
125+
this.protocols = protocols;
126+
return this;
127+
}
128+
129+
public List<ProtocolsEnum> getProtocols() {
130+
return protocols;
131+
}
132+
133+
public void setProtocols(List<ProtocolsEnum> protocols) {
134+
this.protocols = protocols;
135+
}
136+
137+
public static class ExportClient {
138+
@JsonProperty("match")
139+
private String match = null;
140+
141+
public ExportClient match (String match) {
142+
this.match = match;
143+
return this;
144+
}
145+
public String getMatch () {
146+
return match;
147+
}
148+
149+
public void setMatch (String match) {
150+
this.match = match;
151+
}
152+
}
153+
154+
public List<String> getRwRule() {
155+
return rwRule;
156+
}
157+
158+
public void setRwRule(List<String> rwRule) {
159+
this.rwRule = rwRule;
160+
}
161+
162+
public List<String> getRoRule() {
163+
return roRule;
164+
}
165+
166+
public void setRoRule(List<String> roRule) {
167+
this.roRule = roRule;
168+
}
169+
170+
public List<String> getSuperuser() {
171+
return superuser;
172+
}
173+
174+
public void setSuperuser(List<String> superuser) {
175+
this.superuser = superuser;
176+
}
177+
178+
@Override
179+
public String toString() {
180+
return ReflectionToStringBuilderUtils.reflectOnlySelectedFields(this, "anonymousUser", "clients", "index", "protocols");
181+
}
182+
}

0 commit comments

Comments
 (0)