From d55c83c257914112016a9205b6ed81b73116a42a Mon Sep 17 00:00:00 2001 From: youbowu Date: Wed, 8 Mar 2017 17:22:05 +0800 Subject: [PATCH] Add msb register code Issue-ID:HOLMES-51 Change-Id: I5f12140459a22d16aa7b51884a3d54dd2aac4c8e Signed-off-by: youbowu --- holmes-actions/pom.xml | 4 ++ .../holmes/common/api/entity/ServiceNode.java | 31 +++++++++++ .../common/api/entity/ServiceRegisterEntity.java | 46 +++++++++++++++ .../holmes/common/config/MicroServiceConfig.java | 36 ++++++++++++ .../openo/holmes/common/constant/AlarmConst.java | 2 + .../openo/holmes/common/utils/MSBRegisterUtil.java | 65 ++++++++++++++++++++++ .../holmes/common/api/entity/ServiceNodeTest.java | 48 ++++++++++++++++ .../api/entity/ServiceRegisterEntityTest.java | 62 +++++++++++++++++++++ pom.xml | 5 ++ 9 files changed, 299 insertions(+) create mode 100644 holmes-actions/src/main/java/org/openo/holmes/common/api/entity/ServiceNode.java create mode 100644 holmes-actions/src/main/java/org/openo/holmes/common/api/entity/ServiceRegisterEntity.java create mode 100644 holmes-actions/src/main/java/org/openo/holmes/common/config/MicroServiceConfig.java create mode 100644 holmes-actions/src/main/java/org/openo/holmes/common/utils/MSBRegisterUtil.java create mode 100644 holmes-actions/src/test/java/org/openo/holmes/common/api/entity/ServiceNodeTest.java create mode 100644 holmes-actions/src/test/java/org/openo/holmes/common/api/entity/ServiceRegisterEntityTest.java diff --git a/holmes-actions/pom.xml b/holmes-actions/pom.xml index 4fb2e3b..955958c 100644 --- a/holmes-actions/pom.xml +++ b/holmes-actions/pom.xml @@ -113,6 +113,10 @@ powermock-classloading-xstream test + + org.apache.httpcomponents + httpclient + diff --git a/holmes-actions/src/main/java/org/openo/holmes/common/api/entity/ServiceNode.java b/holmes-actions/src/main/java/org/openo/holmes/common/api/entity/ServiceNode.java new file mode 100644 index 0000000..429bf3b --- /dev/null +++ b/holmes-actions/src/main/java/org/openo/holmes/common/api/entity/ServiceNode.java @@ -0,0 +1,31 @@ +/** + * Copyright 2017 ZTE 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.openo.holmes.common.api.entity; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class ServiceNode { + + private String ip; + private String port; + private int ttl; + +} \ No newline at end of file diff --git a/holmes-actions/src/main/java/org/openo/holmes/common/api/entity/ServiceRegisterEntity.java b/holmes-actions/src/main/java/org/openo/holmes/common/api/entity/ServiceRegisterEntity.java new file mode 100644 index 0000000..e7b032c --- /dev/null +++ b/holmes-actions/src/main/java/org/openo/holmes/common/api/entity/ServiceRegisterEntity.java @@ -0,0 +1,46 @@ +/** + * Copyright 2017 ZTE 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.openo.holmes.common.api.entity; + +import java.util.ArrayList; +import java.util.List; +import lombok.Getter; +import lombok.Setter; + +@Setter +@Getter +public class ServiceRegisterEntity { + + private String serviceName; + private String version; + private String url; + private String protocol; + private String visualRange = "1"; + private List nodes = new ArrayList<>(); + + public void setSingleNode(String ip, String port, int ttl) { + ServiceNode node = new ServiceNode(); + if (ip != null && ip.length() > 0) { + node.setIp(ip); + } else { + node.setIp(null); + } + node.setPort(port); + node.setTtl(ttl); + nodes.add(node); + } +} \ No newline at end of file diff --git a/holmes-actions/src/main/java/org/openo/holmes/common/config/MicroServiceConfig.java b/holmes-actions/src/main/java/org/openo/holmes/common/config/MicroServiceConfig.java new file mode 100644 index 0000000..ba55562 --- /dev/null +++ b/holmes-actions/src/main/java/org/openo/holmes/common/config/MicroServiceConfig.java @@ -0,0 +1,36 @@ +/** + * Copyright 2017 ZTE 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.openo.holmes.common.config; + +public class MicroServiceConfig { + + private static String getProperty(String name) { + String value = System.getenv(name); + if (value == null) { + value = System.getProperty(name); + } + return value; + } + + public static String getMsbServerAddr() { + return getProperty("MSB_ADDR"); + } + + public static String getServiceIp() { + return getProperty("SERVICE_IP"); + } + +} diff --git a/holmes-actions/src/main/java/org/openo/holmes/common/constant/AlarmConst.java b/holmes-actions/src/main/java/org/openo/holmes/common/constant/AlarmConst.java index c2248f1..2ddf78f 100644 --- a/holmes-actions/src/main/java/org/openo/holmes/common/constant/AlarmConst.java +++ b/holmes-actions/src/main/java/org/openo/holmes/common/constant/AlarmConst.java @@ -32,4 +32,6 @@ public interface AlarmConst { String ZH_CN = "zh_CN"; String ADMIN = "admin"; + + int RESPONSE_STATUS_OK = 200; } diff --git a/holmes-actions/src/main/java/org/openo/holmes/common/utils/MSBRegisterUtil.java b/holmes-actions/src/main/java/org/openo/holmes/common/utils/MSBRegisterUtil.java new file mode 100644 index 0000000..49dff92 --- /dev/null +++ b/holmes-actions/src/main/java/org/openo/holmes/common/utils/MSBRegisterUtil.java @@ -0,0 +1,65 @@ +/** + * Copyright 2017 ZTE 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.openo.holmes.common.utils; + +import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.IOException; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.ByteArrayEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.jvnet.hk2.annotations.Service; +import org.openo.holmes.common.api.entity.ServiceRegisterEntity; +import org.openo.holmes.common.config.MicroServiceConfig; +import org.openo.holmes.common.constant.AlarmConst; + +@Slf4j +@Service +public class MSBRegisterUtil { + + public boolean register(ServiceRegisterEntity entity) throws IOException { + CloseableHttpClient httpClient = HttpClients.createDefault(); + try { + ObjectMapper mapper = new ObjectMapper(); + String content = mapper.writeValueAsString(entity); + HttpPost httpPost = new HttpPost("http://" + MicroServiceConfig.getMsbServerAddr() + + ":8086/openoapi/microservices/v1/services?createOrUpdate=false"); + if (StringUtils.isNotEmpty(content)) { + httpPost.setEntity(new ByteArrayEntity(content.getBytes())); + } + HttpResponse response; + try { + response = httpClient.execute(httpPost); + } catch (Exception e) { + log.warn("Registering the service to the bus failure", e); + return false; + } + if (response.getStatusLine().getStatusCode() == AlarmConst.RESPONSE_STATUS_OK) { + log.info("Registration successful service to the bus :" + response.getEntity()); + return true; + } else { + log.warn("Registering the service to the bus failure"); + return false; + } + } finally { + httpClient.close(); + } + } +} \ No newline at end of file diff --git a/holmes-actions/src/test/java/org/openo/holmes/common/api/entity/ServiceNodeTest.java b/holmes-actions/src/test/java/org/openo/holmes/common/api/entity/ServiceNodeTest.java new file mode 100644 index 0000000..383cb91 --- /dev/null +++ b/holmes-actions/src/test/java/org/openo/holmes/common/api/entity/ServiceNodeTest.java @@ -0,0 +1,48 @@ +/** + * Copyright 2017 ZTE 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.openo.holmes.common.api.entity; + +import static org.hamcrest.core.IsEqual.equalTo; +import static org.junit.Assert.assertThat; + +import org.junit.Test; + +public class ServiceNodeTest { + + private ServiceNode serviceNode = new ServiceNode(); + + @Test + public void getterAndSetter4ip() { + String ip = "test"; + serviceNode.setIp(ip); + assertThat(serviceNode.getIp(), equalTo(ip)); + } + + @Test + public void getterAndSetter4port() { + String port = "test"; + serviceNode.setPort(port); + assertThat(serviceNode.getPort(), equalTo(port)); + } + + @Test + public void getterAndSetter4ttl() { + int ttl = 1; + serviceNode.setTtl(ttl); + assertThat(serviceNode.getTtl(), equalTo(ttl)); + } +} \ No newline at end of file diff --git a/holmes-actions/src/test/java/org/openo/holmes/common/api/entity/ServiceRegisterEntityTest.java b/holmes-actions/src/test/java/org/openo/holmes/common/api/entity/ServiceRegisterEntityTest.java new file mode 100644 index 0000000..442549d --- /dev/null +++ b/holmes-actions/src/test/java/org/openo/holmes/common/api/entity/ServiceRegisterEntityTest.java @@ -0,0 +1,62 @@ +/** + * Copyright 2017 ZTE 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.openo.holmes.common.api.entity; + +import static org.hamcrest.core.IsEqual.equalTo; +import static org.junit.Assert.assertThat; + +import org.junit.Test; + +public class ServiceRegisterEntityTest { + + private ServiceRegisterEntity serviceRegisterEntity = new ServiceRegisterEntity(); + + @Test + public void getterAndSetter4protocol() { + String protocol = "test"; + serviceRegisterEntity.setProtocol(protocol); + assertThat(serviceRegisterEntity.getProtocol(), equalTo(protocol)); + } + + @Test + public void getterAndSetter4serviceName() { + String serviceName = "test"; + serviceRegisterEntity.setServiceName(serviceName); + assertThat(serviceRegisterEntity.getServiceName(), equalTo(serviceName)); + } + + @Test + public void getterAndSetter4url() { + String url = "test"; + serviceRegisterEntity.setUrl(url); + assertThat(serviceRegisterEntity.getUrl(), equalTo(url)); + } + + @Test + public void getterAndSetter4version() { + String version = "test"; + serviceRegisterEntity.setVersion(version); + assertThat(serviceRegisterEntity.getVersion(), equalTo(version)); + } + + @Test + public void getterAndSetter4visualRange() { + String visualRange = "test"; + serviceRegisterEntity.setVisualRange(visualRange); + assertThat(serviceRegisterEntity.getVisualRange(), equalTo(visualRange)); + } +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 28dbb33..a5c3293 100644 --- a/pom.xml +++ b/pom.xml @@ -167,6 +167,11 @@ activemq-pool 5.8.0 + + org.apache.httpcomponents + httpclient + 4.3.6 + -- 2.16.6