aboutsummaryrefslogtreecommitdiffstats
path: root/simulator-cli/cli/client
diff options
context:
space:
mode:
authorBartosz Gardziejewski <bartosz.gardziejewski@nokia.com>2020-04-08 09:31:13 +0200
committerBogumil Zebek <bogumil.zebek@nokia.com>2020-04-08 09:43:31 +0000
commit3c494af52c476a86ae1389991b464914517774b8 (patch)
treee6d9b4f261eac5f7b3fd0f42e740840a106842e6 /simulator-cli/cli/client
parent75496bfc5b2f7e03e49ab4929d1f20962b39c992 (diff)
Move PNF simulator from /test/mocks to new project
This code is a copy of pnfsimulator located in integration repository (/test/mocks/pnfsimulator) with added profile "docker" in pom.xml located in pnfsimulator and netconfsimulator subprojects Issue-ID: INT-1517 Signed-off-by: Bartosz Gardziejewski <bartosz.gardziejewski@nokia.com> Change-Id: I725fa0530c41b13cb12705979dee8b8b354dc1a1
Diffstat (limited to 'simulator-cli/cli/client')
-rw-r--r--simulator-cli/cli/client/__init__.py19
-rw-r--r--simulator-cli/cli/client/tailf_client.py59
2 files changed, 78 insertions, 0 deletions
diff --git a/simulator-cli/cli/client/__init__.py b/simulator-cli/cli/client/__init__.py
new file mode 100644
index 0000000..aa8b4f9
--- /dev/null
+++ b/simulator-cli/cli/client/__init__.py
@@ -0,0 +1,19 @@
+###
+# ============LICENSE_START=======================================================
+# Simulator
+# ================================================================================
+# Copyright (C) 2019 Nokia. All rights reserved.
+# ================================================================================
+# 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=========================================================
+###
diff --git a/simulator-cli/cli/client/tailf_client.py b/simulator-cli/cli/client/tailf_client.py
new file mode 100644
index 0000000..d1cb60d
--- /dev/null
+++ b/simulator-cli/cli/client/tailf_client.py
@@ -0,0 +1,59 @@
+###
+# ============LICENSE_START=======================================================
+# Simulator
+# ================================================================================
+# Copyright (C) 2019 Nokia. All rights reserved.
+# ================================================================================
+# 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 logging
+
+import websockets
+import asyncio
+import signal
+import sys
+
+
+class TailfClient(object):
+
+ def __init__(self, url: str, verbose: bool = False) -> None:
+ self._url = url
+ self._is_running = False
+ self._connection = None
+ self.logger = logging.getLogger()
+ self.logger.setLevel(logging.DEBUG if verbose else logging.INFO)
+ signal.signal(signal.SIGINT, self._handle_keyboard_interrupt)
+
+ def tailf_messages(self):
+ self._is_running = True
+ self.logger.debug("Attempting to connect to websocket server on %s", self._url)
+ asyncio.get_event_loop().run_until_complete(
+ self._tailf_messages()
+ )
+
+ async def _tailf_messages(self):
+ try:
+ async with websockets.connect(self._url) as connection:
+ self.logger.debug("Connection with %s established", self._url)
+ self._connection = connection
+ while self._is_running:
+ print(await self._connection.recv(), "\n")
+ except ConnectionRefusedError:
+ self.logger.error("Cannot establish connection with %s", self._url)
+
+ def _handle_keyboard_interrupt(self, sig, frame):
+ self.logger.warning("CTR-C pressed, interrupting.")
+ self._is_running = False
+ sys.exit(0)