diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..0bc3c3c772a6fe3b47afc979f61928ce251098d4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/target/ +/.project +/.classpath +/.settings diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..dd449d0a9edde281f3d2c287ff567634b669201f --- /dev/null +++ b/pom.xml @@ -0,0 +1,239 @@ + + 4.0.0 + + org.etsi.osl.sol005nbi + org.etsi.osl.sol005nbi.osm + 1.2.0-SNAPSHOT + jar + + org.etsi.osl.sol005nbi.osm + + + openslice.io + http://openslice.io + + + 2019 + + + + Apache 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + A business-friendly OSS license + + + + + UTF-8 + ${project.build.directory}/generated-sources/mdsal-binding + UTF-8 + 2.0.0 + apache_v2 + 3.1.2 + + + + + opendaylight-release + opendaylight-release + https://nexus.opendaylight.org/content/repositories/opendaylight.release/ + + + opendaylight-snapshot + opendaylight-snapshot + https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/ + + + + + + + opendaylight-release + opendaylight-release + https://nexus.opendaylight.org/content/repositories/opendaylight.release/ + + + opendaylight-snapshot + opendaylight-snapshot + https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/ + + + + + + + + org.opendaylight.yangtools + yangtools-artifacts + 6.0.5 + pom + import + + + + org.springframework.boot + spring-boot-dependencies + ${spring.boot-version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + com.google.code.findbugs + jsr305 + 3.0.2 + + + org.opendaylight.yangtools + yang-common + + + org.opendaylight.mdsal + yang-binding + 0.13.1 + + + + + + org.springframework.boot + spring-boot-starter + + + org.springframework + spring-web + + + com.fasterxml.jackson.core + jackson-databind + + + com.fasterxml.jackson.dataformat + jackson-dataformat-yaml + + + org.apache.commons + commons-lang3 + + + org.apache.httpcomponents + httpcore + jar + + + org.json + json + 20160212 + jar + + + org.apache.geronimo.specs + geronimo-jpa_2.0_spec + 1.1 + + + + + + + + org.apache.commons + commons-compress + 1.21 + + + + org.apache.commons + commons-io + 1.3.2 + + + + + + + + + + src/main/resources + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 17 + 17 + + + + org.codehaus.mojo + license-maven-plugin + ${maven-license-plugin.version} + + false + ========================LICENSE_START================================= + =========================LICENSE_END================================== + src/main/java/io,src/main/java/OSM5NBIClient,src/main/java/OSM5Util + + + + generate-license-headers + + update-file-header + + process-sources + + ${license.licenseName} + + + + + download-licenses + + download-licenses + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/org/etsi/osl/sol005nbi/ANSCreateInstanceRequestPayload.java b/src/main/java/org/etsi/osl/sol005nbi/ANSCreateInstanceRequestPayload.java new file mode 100644 index 0000000000000000000000000000000000000000..5f238f30a6eb54c396f2240aba209320ea1b29fc --- /dev/null +++ b/src/main/java/org/etsi/osl/sol005nbi/ANSCreateInstanceRequestPayload.java @@ -0,0 +1,36 @@ +package org.etsi.osl.sol005nbi; +/*- + * ========================LICENSE_START================================= + * org.etsi.osl.sol007nbi.osm + * %% + * Copyright (C) 2019 openslice.io + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =========================LICENSE_END================================== + */ + + +/** + * @author ctranoris + * + */ +public class ANSCreateInstanceRequestPayload extends ANSInstantiateInstanceRequestPayload +{ + private final String notificationType = "NsIdentifierCreationNotification"; + + public ANSCreateInstanceRequestPayload() + { + super(); + } +} + diff --git a/src/main/java/org/etsi/osl/sol005nbi/ANSInstantiateInstanceRequestPayload.java b/src/main/java/org/etsi/osl/sol005nbi/ANSInstantiateInstanceRequestPayload.java new file mode 100644 index 0000000000000000000000000000000000000000..bf072e309d99946f48778637c6eec732d864f388 --- /dev/null +++ b/src/main/java/org/etsi/osl/sol005nbi/ANSInstantiateInstanceRequestPayload.java @@ -0,0 +1,207 @@ +package org.etsi.osl.sol005nbi; +/*- + * ========================LICENSE_START================================= + * org.etsi.osl.sol005nbi + * %% + * Copyright (C) 2019 openslice.io + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =========================LICENSE_END================================== + */ + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class ANSInstantiateInstanceRequestPayload +{ + private String nsName; + public String getNsName() { + return nsName; + } + + public void setNsName(String nsName) { + this.nsName = nsName; + } + + private String vimAccountId; + public String getVimAccountId() { + return vimAccountId; + } + + public void setVimAccountId(String vimAccountId) { + this.vimAccountId = vimAccountId; + } + + private Boolean wimAccountId; + public Boolean getWimAccountId() { + return wimAccountId; + } + + public void setWimAccountId(Boolean wimAccountId) { + this.wimAccountId = wimAccountId; + } + + + private String nsdId; + public String getNsdId() { + return nsdId; + } + + public void setNsdId(String nsdId) { + this.nsdId = nsdId; + } + + public class VnF + { + @JsonProperty("member-vnf-index") + private String memberVnFIndex; + public String getMemberVnFIndex() { + return memberVnFIndex; + } + public void setMemberVnFIndex(String memberVnFIndex) { + this.memberVnFIndex = memberVnFIndex; + } + @JsonProperty("vdu") + private List vdu = null; + + public List getVdu() { + return vdu; + } + public void setVdu(List vdu) { + this.vdu = vdu; + } + + @JsonProperty("vimAccountId") + private String vimAccount; + public String getVimAccount() { + return vimAccount; + } + public void setVimAccount(String vimAccount) { + this.vimAccount = vimAccount; + } + + public VnF() + { + + }; + } + + + public class Vdu + { + @JsonProperty("id") + private String id; + @JsonProperty("interface") + private ArrayList interfaceObj = null; + + public ArrayList getInterfaceObj() { + return interfaceObj; + } + public void setInterfaceObj(ArrayList interfaceObj) { + this.interfaceObj = interfaceObj; + } + public String getId() { + return id; + } + public void setId(String id) { + this.id = id; + } + } + + public class NInterface + { + @JsonProperty("name") + private String name; + @JsonProperty("floating-ip-required") + private Boolean floating_ip_required; + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public Boolean getFloating_ip_required() { + return floating_ip_required; + } + public void setFloating_ip_required(Boolean floating_ip_required) { + this.floating_ip_required = floating_ip_required; + } + } + + class Vld + { + @JsonProperty("name") + private String name; + @JsonProperty("vim-network-name") + private LinkedHashMap vimNetworkName = new LinkedHashMap<>(); + + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public LinkedHashMap getVimNetworkName() { + return vimNetworkName; + } + public void setVimNetworkName(LinkedHashMap vimNetworkName) { + this.vimNetworkName = vimNetworkName; + } +// private String vimNetworkName; +// public String getVimNetworkName() { +// return vimNetworkName; +// } +// public void setVimNetworkName(String vimNetworkName) { +// this.vimNetworkName = vimNetworkName; +// } + } + private List vnf = new ArrayList<>(); + public List getVnf() { + return vnf; + } + + public void setVnf(List vnf) { + this.vnf = vnf; + } + + private List vld = new ArrayList<>(); + + public List getVld() { + return vld; + } + + public void setVld(List vld) { + this.vld = vld; + } + + public String toJSON() + { + String jsonInString=null; + ObjectMapper mapper = new ObjectMapper(); + mapper.setSerializationInclusion(Include.NON_NULL); + try { + jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(this); + } catch (JsonProcessingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return jsonInString; + } + +} diff --git a/src/main/java/org/etsi/osl/sol005nbi/ANSScaleRequestPayload.java b/src/main/java/org/etsi/osl/sol005nbi/ANSScaleRequestPayload.java new file mode 100644 index 0000000000000000000000000000000000000000..73992877d486df7f607bc85fa164aa7b5cbf3126 --- /dev/null +++ b/src/main/java/org/etsi/osl/sol005nbi/ANSScaleRequestPayload.java @@ -0,0 +1,163 @@ +/*- + * ========================LICENSE_START================================= + * org.etsi.osl.sol007nbi.osm + * %% + * Copyright (C) 2019 openslice.io + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =========================LICENSE_END================================== + */ + +package org.etsi.osl.sol005nbi; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +/** + * @author Ioannis Chatzis + * + */ + +enum ScaleVnfType {SCALE_OUT, SCALE_IN}; + +public class ANSScaleRequestPayload +{ + public class ScaleVnfData + { + public class ScaleByStepData + { + @JsonProperty("scaling-group-descriptor") + private String scaling_group_descriptor; + @JsonProperty("member-vnf-index") + private String member_vnf_index; + @JsonProperty("scaling-policy") + private String scaling_policy; + + public String getScaling_group_descriptor() { + return scaling_group_descriptor; + } + public void setScaling_group_descriptor(String scaling_group_descriptor) { + this.scaling_group_descriptor = scaling_group_descriptor; + } + public String getMember_vnf_index() { + return member_vnf_index; + } + public void setMember_vnf_index(String member_vnf_index) { + this.member_vnf_index = member_vnf_index; + } + public String getScaling_policy() { + return scaling_policy; + } + public void setScaling_policy(String scaling_policy) { + this.scaling_policy = scaling_policy; + } + } + + private String scaleVnfType; + private String vnfInstanceId; + private ScaleByStepData scaleByStepData = new ScaleByStepData(); + + public String getVnfInstanceId() { + return vnfInstanceId; + } + public ScaleByStepData getScaleByStepData() { + return scaleByStepData; + } + public void setScaleByStepData(ScaleByStepData scaleByStepData) { + this.scaleByStepData = scaleByStepData; + } + public void setVnfInstanceId(String vnfInstanceId) { + this.vnfInstanceId = vnfInstanceId; + } + public String getScaleVnfType() { + return scaleVnfType; + } + public void setScaleVnfType(String scaleVnfType) { + this.scaleVnfType = scaleVnfType; + } + + } + + private String lcmOperationType; //"lcmOperationType": "scale" + private String nsInstanceId; + private String scaleType; + @JsonProperty("timeout-ns-scale") + private String timeout_ns_scale; + private ScaleVnfData scaleVnfData = new ScaleVnfData(); + private String scaleTime; + + public String getLcmOperationType() { + return lcmOperationType; + } + + public void setLcmOperationType(String lcmOperationType) { + this.lcmOperationType = lcmOperationType; + } + + public String getNsInstanceId() { + return nsInstanceId; + } + + public void setNsInstanceId(String nsInstanceId) { + this.nsInstanceId = nsInstanceId; + } + + public String toJSON() + { + String jsonInString=null; + ObjectMapper mapper = new ObjectMapper(); + mapper.setSerializationInclusion(Include.NON_NULL); + try { + jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(this); + } catch (JsonProcessingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return jsonInString; + } + + public String getScaleType() { + return scaleType; + } + + public void setScaleType(String scaleType) { + this.scaleType = scaleType; + } + + public String getTimeout_ns_scale() { + return timeout_ns_scale; + } + + public void setTimeout_ns_scale(String timeout_ns_scale) { + this.timeout_ns_scale = timeout_ns_scale; + } + + public ScaleVnfData getScaleVnfData() { + return scaleVnfData; + } + + public void setScaleVnfData(ScaleVnfData scaleVnfData) { + this.scaleVnfData = scaleVnfData; + } + + public String getScaleTime() { + return scaleTime; + } + + public void setScaleTime(String scaleTime) { + this.scaleTime = scaleTime; + } +} + diff --git a/src/main/java/org/etsi/osl/sol005nbi/OSMClient.java b/src/main/java/org/etsi/osl/sol005nbi/OSMClient.java new file mode 100644 index 0000000000000000000000000000000000000000..d68e66a178139158ca956425b0093e764b91b775 --- /dev/null +++ b/src/main/java/org/etsi/osl/sol005nbi/OSMClient.java @@ -0,0 +1,81 @@ +/*- + * ========================LICENSE_START================================= + * org.etsi.osl.sol005nbi.osm + * %% + * Copyright (C) 2019 - 2020 openslice.io + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =========================LICENSE_END================================== + */ +package org.etsi.osl.sol005nbi; + +import java.io.IOException; + +import org.json.JSONObject; +import org.springframework.http.ResponseEntity; + +public interface OSMClient { + + String getMANOApiEndpoint(); + + JSONObject getNSInstanceInfo(String instanceId); + + JSONObject getVNFInstanceInfo(String instanceId); + + JSONObject getNSInstanceContentInfo(String instanceId); + + JSONObject getNSLCMDetails(String nsLcmOpOccId); + + ResponseEntity getNSLCMDetailsList(); + + String getNSLCMDetailsListByNSID(String nsid); + + ResponseEntity createVNFDPackage(); + + ResponseEntity deleteVNFDPackage(String vnfd_id); + + ResponseEntity uploadVNFDPackageContent(String vnfd_id, String pLocation) throws IOException; + + ResponseEntity uploadVNFDPackageContent(String vnfd_id, byte[] allBytes) throws IOException; + + ResponseEntity createNSDPackage(); + + ResponseEntity uploadNSDPackageContent(String nsd_id, String pLocation) throws IOException; + + ResponseEntity uploadNSDPackageContent(String nsd_id, byte[] allBytes) throws IOException; + + ResponseEntity deleteNSDPackage(String nsd_id); + + ResponseEntity getVNFInstanceInfoNew(String string); + + ResponseEntity createNSInstance(String json); + + ResponseEntity instantiateNSInstance(String nsd_instance_id, String json); + + ResponseEntity deleteNSInstanceNew(String instanceId, boolean force); + + ResponseEntity terminateNSInstanceNew(String instanceId); + + ResponseEntity actionNSInstance(String ns_instance_id, String payload); + + ResponseEntity scaleNSInstance(String ns_instance_id, String payload); + + ResponseEntity getVIMs(); + + ResponseEntity getVNFDescriptorsList(); + + ResponseEntity getNSDescriptorsList(); + + ResponseEntity getNSInstancesList(); + +} diff --git a/src/main/java/org/etsi/osl/sol005nbi/OSMUtil/OSMNSExtractor.java b/src/main/java/org/etsi/osl/sol005nbi/OSMUtil/OSMNSExtractor.java new file mode 100644 index 0000000000000000000000000000000000000000..fe80f80a8455f9c2cf0331215ca249d51e76b8aa --- /dev/null +++ b/src/main/java/org/etsi/osl/sol005nbi/OSMUtil/OSMNSExtractor.java @@ -0,0 +1,35 @@ +/*- + * ========================LICENSE_START================================= + * org.etsi.osl.sol005nbi.osm5 + * %% + * Copyright (C) 2019 openslice.io + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =========================LICENSE_END================================== + */ +package org.etsi.osl.sol005nbi.OSMUtil; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; + +public interface OSMNSExtractor { + + public Object extractNsDescriptor() throws IOException ; + + public String getDescriptorYAMLfile() ; + + public void setDescriptorYAMLfile(String descriptorYAMLfile) ; + + public ByteArrayOutputStream getIconfilePath() ; + +} diff --git a/src/main/java/org/etsi/osl/sol005nbi/OSMUtil/OSMVNFDExtractor.java b/src/main/java/org/etsi/osl/sol005nbi/OSMUtil/OSMVNFDExtractor.java new file mode 100644 index 0000000000000000000000000000000000000000..aa0ef91bc34c3f174467474dba57429279f26721 --- /dev/null +++ b/src/main/java/org/etsi/osl/sol005nbi/OSMUtil/OSMVNFDExtractor.java @@ -0,0 +1,34 @@ +/*- + * ========================LICENSE_START================================= + * org.etsi.osl.sol005nbi.osm5 + * %% + * Copyright (C) 2019 openslice.io + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =========================LICENSE_END================================== + */ +package org.etsi.osl.sol005nbi.OSMUtil; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; + +public interface OSMVNFDExtractor { + + Object extractVnfdDescriptor() throws IOException ; + + public String getDescriptorYAMLfile() ; + + public void setDescriptorYAMLfile(String descriptorYAMLfile) ; + + public ByteArrayOutputStream getIconfilePath() ; +} diff --git "a/src/main/java/org/etsi/osl/sol005nbi/\316\221NSActionRequestPayload.java" "b/src/main/java/org/etsi/osl/sol005nbi/\316\221NSActionRequestPayload.java" new file mode 100644 index 0000000000000000000000000000000000000000..59de200dc3eadb0f717ad8184b2733459f881204 --- /dev/null +++ "b/src/main/java/org/etsi/osl/sol005nbi/\316\221NSActionRequestPayload.java" @@ -0,0 +1,155 @@ +package org.etsi.osl.sol005nbi; +/*- + * ========================LICENSE_START================================= + * org.etsi.osl.sol005nbi.osm + * %% + * Copyright (C) 2019 openslice.io + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =========================LICENSE_END================================== + */ + +import java.util.LinkedHashMap; +import java.util.Map; + +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +/** + * @author ichatzis + * + */ +public class ΑNSActionRequestPayload +{ + + private String nsInstanceId; + private String member_vnf_index; // Needed for VNFD mapping NSD.constituent-vnfd.member-vnf-index. If missing a NSD is targeting. Example: "member_vnf_index": "1", + private String vdu_id; // Needed if target is a VDU. Maps VNFD.vdu-id + private String vdu_count_index; // Needed if the VDU has several replicas (count>1) + private String primitive; // Mandatory. Maps [NSD.ns-configuration or VNFD.vnf-configuration or VNFD.vdu.vdu-configuration].config-primitive.name. Example: "primitive": "touch" + private String param; + private String lcmOperationType; //"lcmOperationType": "action"α + private String vnf_member_index; // TODO for backward compatibility. To remove in future + private String kdu_name; + private Integer timeout_ns_action; + private Map primitive_params = new LinkedHashMap<>(); + + public Map getPrimitive_params() { + return primitive_params; + } + + @JsonAnySetter + public void setPrimitive_params(Map primitive_params) { + this.primitive_params = primitive_params; + } + + public String getMember_vnf_index() { + return member_vnf_index; + } + + public void setMember_vnf_index(String member_vnf_index) { + this.member_vnf_index = member_vnf_index; + } + + public String getVdu_id() { + return vdu_id; + } + + public void setVdu_id(String vdu_id) { + this.vdu_id = vdu_id; + } + + public String getVdu_count_index() { + return vdu_count_index; + } + + public void setVdu_count_index(String vdu_count_index) { + this.vdu_count_index = vdu_count_index; + } + + public String getPrimitive() { + return primitive; + } + + public void setPrimitive(String primitive) { + this.primitive = primitive; + } + + public void setPrimitiveParams(String primitive_name, String primitive_value) { + } + + public String getParam() { + return param; + } + + public void setParam(String param) { + this.param = param; + } + + public String getLcmOperationType() { + return lcmOperationType; + } + + public void setLcmOperationType(String lcmOperationType) { + this.lcmOperationType = lcmOperationType; + } + + public String getNsInstanceId() { + return nsInstanceId; + } + + public void setNsInstanceId(String nsInstanceId) { + this.nsInstanceId = nsInstanceId; + } + + public String getVnf_member_index() { + return vnf_member_index; + } + + public void setVnf_member_index(String vnf_member_index) { + this.vnf_member_index = vnf_member_index; + } + + public String getKdu_name() { + return kdu_name; + } + + public void setKdu_name(String kdu_name) { + this.kdu_name = kdu_name; + } + + public Integer getTimeout_ns_action() { + return timeout_ns_action; + } + + public void setTimeout_ns_action(Integer timeout_ns_action) { + this.timeout_ns_action = timeout_ns_action; + } + + public String toJSON() + { + String jsonInString=null; + ObjectMapper mapper = new ObjectMapper(); + mapper.setSerializationInclusion(Include.NON_NULL); + try { + jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(this); + } catch (JsonProcessingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return jsonInString; + } +} +