+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2016-2017 VMware Inc.
+# This file is part of ETSI OSM
+# 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.
+#
+# For those usages not covered by the Apache License, Version 2.0 please
+# contact: osslegalrouting@vmware.com
+##
+
+import threading
+import sys
+
+class RepeatingTimer(threading._Timer):
+ """ Class to run thread parally """
+ def run(self):
+ """ Method to run thread """
+ while True:
+ self.finished.wait(self.interval)
+ if self.finished.is_set():
+ return
+ else:
+ self.function(*self.args, **self.kwargs)
+
+
+class CommandProgressbar(object):
+ """ Class to show progressbar while waiting fro command output """
+
+ def __init__(self):
+ self.timer = None
+
+ def __show_progressbar(self):
+ """
+ Private method to show progressbar while waiting for command to complete
+ Args : None
+ Return : None
+ """
+ print '\b.',
+ sys.stdout.flush()
+
+ def start_progressbar(self):
+ """
+ Method to start progressbar thread
+ Args : None
+ Return : None
+ """
+ self.timer = RepeatingTimer(1.0, self.__show_progressbar)
+ self.timer.daemon = True # Allows program to exit if only the thread is alive
+ self.timer.start()
+
+ def stop_progressbar(self):
+ """
+ Method to stop progressbar thread
+ Args : None
+ Return : None
+ """
+ self.timer.cancel()