Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions src/azure-cli-core/azure/cli/core/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ def __init__(self, **kwargs):

from azure.cli.core.commands.arm import add_id_parameters
from azure.cli.core.cloud import get_active_cloud
import azure.cli.core.commands.progress as progress
from azure.cli.core.extensions import register_extensions
from azure.cli.core._session import ACCOUNT, CONFIG, SESSION

Expand All @@ -49,13 +48,13 @@ def __init__(self, **kwargs):
self.cloud = get_active_cloud(self)
logger.debug('Current cloud config:\n%s', str(self.cloud.name))

self.progress_controller = progress.ProgressHook()

register_extensions(self)
self.register_event(events.EVENT_INVOKER_POST_CMD_TBL_CREATE, add_id_parameters)
# TODO: Doesn't work because args get copied
# self.register_event(events.EVENT_INVOKER_PRE_CMD_TBL_CREATE, _pre_command_table_create)

self.progress_controller = None

def refresh_request_id(self):
"""Assign a new random GUID as x-ms-client-request-id

Expand All @@ -67,6 +66,9 @@ def refresh_request_id(self):

def get_progress_controller(self, det=False):
import azure.cli.core.commands.progress as progress
if not self.progress_controller:
self.progress_controller = progress.ProgressHook()

self.progress_controller.init_progress(progress.get_progress_view(det))
return self.progress_controller

Expand Down
15 changes: 6 additions & 9 deletions src/azure-cli-core/azure/cli/core/commands/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -328,15 +328,12 @@ def execute(self, args):


class LongRunningOperation(object): # pylint: disable=too-few-public-methods

def __init__(self, cli_ctx, start_msg='', finish_msg='',
poller_done_interval_ms=1000.0, progress_controller=None):
def __init__(self, cli_ctx, start_msg='', finish_msg='', poller_done_interval_ms=1000.0):

self.cli_ctx = cli_ctx
self.start_msg = start_msg
self.finish_msg = finish_msg
self.poller_done_interval_ms = poller_done_interval_ms
self.progress_controller = progress_controller or cli_ctx.get_progress_controller()
self.deploy_dict = {}
self.last_progress_report = datetime.datetime.now()

Expand Down Expand Up @@ -409,13 +406,13 @@ def __call__(self, poller):
from msrest.exceptions import ClientException

correlation_message = ''
self.progress_controller.begin()
self.cli_ctx.get_progress_controller.begin()
correlation_id = None

is_verbose = any(handler.level <= logs.INFO for handler in logger.handlers)

while not poller.done():
self.progress_controller.add(message='Running')
self.cli_ctx.get_progress_controller.add(message='Running')
try:
# pylint: disable=protected-access
correlation_id = json.loads(
Expand All @@ -435,18 +432,18 @@ def __call__(self, poller):
try:
self._delay()
except KeyboardInterrupt:
self.progress_controller.stop()
self.cli_ctx.get_progress_controller.stop()
logger.error('Long running operation wait cancelled. %s', correlation_message)
raise

try:
result = poller.result()
except ClientException as client_exception:
from azure.cli.core.commands.arm import handle_long_running_operation_exception
self.progress_controller.stop()
self.cli_ctx.get_progress_controller.stop()
handle_long_running_operation_exception(client_exception)

self.progress_controller.end()
self.cli_ctx.get_progress_controller.end()
return result


Expand Down