diff options
author | 2017-09-28 02:39:00 -0700 | |
---|---|---|
committer | 2017-09-28 02:39:00 -0700 | |
commit | 5163db790f73ceaec4f08d5b41e03a862f7a8818 (patch) | |
tree | d7578752b27175777e39f7df673a439c9f6715ec /nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java | |
parent | 16e4b6bdec169b97015752958a94d3ed0ad8c02a (diff) |
Add MSB service register funtion
Change-Id: I2ffe7634052c93ce3c287aa996877610f3a46f4c
Issue-ID: VFC-53
Signed-off-by: yufei_zhou <yufei.zhou@nokia-sbell.com>
Diffstat (limited to 'nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java')
6 files changed, 249 insertions, 1 deletions
diff --git a/nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/common/bo/AdaptorEnv.java b/nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/common/bo/AdaptorEnv.java index 93454329..343e517e 100644 --- a/nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/common/bo/AdaptorEnv.java +++ b/nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/common/bo/AdaptorEnv.java @@ -23,16 +23,23 @@ import org.springframework.stereotype.Component; public class AdaptorEnv { @Value("${nslcmApiUriFront}") private String nslcmApiUriFront; + @Value("${catalogApiUriFront}") private String catalogApiUriFront; + @Value("${cbamApiUriFront}") private String cbamApiUriFront; + @Value("${msbApiUriFront}") + private String msbApiUriFront; + //for retrieving token from CBAM @Value("${grantType}") private String grantType; + @Value("${clientId}") private String clientId; + @Value("${clientSecret}") private String clientSecret; @@ -72,5 +79,11 @@ public class AdaptorEnv { public void setClientSecret(String clientSecret) { this.clientSecret = clientSecret; } + public String getMsbApiUriFront() { + return msbApiUriFront; + } + public void setMsbApiUriFront(String msbApiUriFront) { + this.msbApiUriFront = msbApiUriFront; + } } diff --git a/nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/constant/CommonConstants.java b/nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/constant/CommonConstants.java index c145e28c..22c06ef0 100644 --- a/nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/constant/CommonConstants.java +++ b/nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/constant/CommonConstants.java @@ -57,4 +57,9 @@ public class CommonConstants { public static final String CBAM_OPERATION_STATUS_START = "start"; public static final String CBAM_OPERATION_STATUS_FINISH = "finished"; + + //MSB + public static final String MSB_REGISTER_SERVICE_PATH = "/api/microservices/v1/services"; +// public static final String MSB_REGISTER_SERVICE_PATH = "/api/microservices/v1/services/{serviceName}/version/{version}/nodes/{ip}/{port}"; + public static final String MSB_UNREGISTER_SERVICE_PATH = "/api/microservices/v1/services/%s/version/%s/nodes/%s/%s"; } diff --git a/nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/msb/impl/MsbMgmrImpl.java b/nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/msb/impl/MsbMgmrImpl.java new file mode 100644 index 00000000..ed85fcfc --- /dev/null +++ b/nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/msb/impl/MsbMgmrImpl.java @@ -0,0 +1,168 @@ +/* + * Copyright 2016-2017, Nokia Corporation + * + * 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. + */ + +package org.onap.vfc.nfvo.driver.vnfm.svnfm.msb.impl; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; + +import org.apache.http.client.ClientProtocolException; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.onap.vfc.nfvo.driver.vnfm.svnfm.common.bo.AdaptorEnv; +import org.onap.vfc.nfvo.driver.vnfm.svnfm.constant.CommonConstants; +import org.onap.vfc.nfvo.driver.vnfm.svnfm.http.client.HttpRequestProcessor; +import org.onap.vfc.nfvo.driver.vnfm.svnfm.msb.inf.IMsbMgmr; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Component; +import org.springframework.util.ResourceUtils; +import org.springframework.web.bind.annotation.RequestMethod; + +@Component +public class MsbMgmrImpl implements IMsbMgmr { + private static final Logger logger = LogManager.getLogger("MsbMgmrImpl"); + @Autowired + private HttpClientBuilder httpClientBuilder; + + @Autowired + private AdaptorEnv adaptorEnv; + + @Value("${serviceName}") + private String serviceName; + + @Value("${version}") + private String version; + + @Value("${url}") + private String url; + + @Value("${protocol}") + private String protocol; + + @Value("${visualRange}") + private String visualRange; + + @Value("${ip}") + private String ip; + + @Value("${port}") + private String port; + + @Value("${ttl}") + private String ttl; + + @Override + public void register() { + String httpPath = CommonConstants.MSB_REGISTER_SERVICE_PATH; + RequestMethod method = RequestMethod.POST; + + try { + String jsonStr = readVfcAdaptorInfoFromJsonFile(); + String registerResponse = operateHttpTask(jsonStr, httpPath, method); + logger.info("registerResponse is ", registerResponse); + } catch (IOException e) { + logger.error("Failed to read vfcadaptor info! ", e); + } + + } + + public String readVfcAdaptorInfoFromJsonFile() throws IOException { + InputStream ins = null; + BufferedInputStream bins = null; + String fileContent = ""; + String fileName = getAppRoot() + "/etc/adapterInfo/vnfmadapterinfo.json"; + + try { + ins = new FileInputStream(fileName); + bins = new BufferedInputStream(ins); + + byte[] contentByte = new byte[ins.available()]; + int num = bins.read(contentByte); + + if(num > 0) { + fileContent = new String(contentByte); + } + } catch(FileNotFoundException e) { + logger.error(fileName + "is not found!", e); + } finally { + if(ins != null) { + ins.close(); + } + if(bins != null) { + bins.close(); + } + } + + return fileContent; + } + + @Override + public void unregister() { + String httpPath = String.format(CommonConstants.MSB_UNREGISTER_SERVICE_PATH, serviceName, version, ip, port); + RequestMethod method = RequestMethod.DELETE; + + try { + String jsonStr = readVfcAdaptorInfoFromJsonFile(); + String registerResponse = operateHttpTask(jsonStr, httpPath, method); + logger.info("unregisterResponse is ", registerResponse); + } catch (IOException e) { + logger.error("Failed to unregister! ", e); + } + + } + + public String operateHttpTask(String httpBodyObj, String httpPath, RequestMethod method) throws ClientProtocolException, IOException { + String url=adaptorEnv.getMsbApiUriFront() + httpPath; + HttpRequestProcessor processor = new HttpRequestProcessor(httpClientBuilder, method); + processor.addHdeader(CommonConstants.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE); + + processor.addPostEntity(httpBodyObj); + + String responseStr = processor.process(url); + + return responseStr; + } + + public String getAppRoot() { + String appRoot = null; + appRoot = System.getProperty("catalina.base"); + if(appRoot != null) { + appRoot = getCanonicalPath(appRoot); + } + return appRoot; + } + + private String getCanonicalPath(final String inPath) { + String path = null; + try { + if(inPath != null) { + final File file = new File(inPath); + path = file.getCanonicalPath(); + } + } catch(final IOException e) { + logger.error("file.getCanonicalPath() IOException:", e); + } + return path; + } + +} diff --git a/nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/msb/inf/IMsbMgmr.java b/nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/msb/inf/IMsbMgmr.java new file mode 100644 index 00000000..aaabc3f2 --- /dev/null +++ b/nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/msb/inf/IMsbMgmr.java @@ -0,0 +1,22 @@ +/* + * Copyright 2016-2017, Nokia Corporation + * + * 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. + */ + +package org.onap.vfc.nfvo.driver.vnfm.svnfm.msb.inf; + +public interface IMsbMgmr { + public void register(); + public void unregister(); +} diff --git a/nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/msb/service/MsgServiceRegister.java b/nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/msb/service/MsgServiceRegister.java new file mode 100644 index 00000000..5f52297d --- /dev/null +++ b/nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/msb/service/MsgServiceRegister.java @@ -0,0 +1,40 @@ +/* + * Copyright 2016-2017, Nokia Corporation + * + * 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. + */ + +package org.onap.vfc.nfvo.driver.vnfm.svnfm.msb.service; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.onap.vfc.nfvo.driver.vnfm.svnfm.msb.inf.IMsbMgmr; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.stereotype.Component; + +@Component +public class MsgServiceRegister implements ApplicationRunner{ + private static final Logger logger = LogManager.getLogger("MsgServiceRegister"); + + @Autowired + private IMsbMgmr msbMgmr; + + @Override + public void run(ApplicationArguments arg0) { + msbMgmr.register(); + logger.info("nokia vnfm driver successfully registered on the MSB"); + } + +} diff --git a/nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/vnfmdriver/controller/VnfmDriverController.java b/nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/vnfmdriver/controller/VnfmDriverController.java index a3aee38e..39b6b3f6 100644 --- a/nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/vnfmdriver/controller/VnfmDriverController.java +++ b/nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/vnfmdriver/controller/VnfmDriverController.java @@ -47,7 +47,7 @@ import org.springframework.web.bind.annotation.ResponseBody; import com.google.gson.Gson; @Controller -@RequestMapping(value = "/nokiavnfm/v1") +@RequestMapping(value = "/api/nokiavnfmdriver/v1") public class VnfmDriverController { private static final Logger logger = LogManager.getLogger("VnfmDriverController"); |