def create_tunnel(cmd, resource_group_name, name, port=None, slot=None): logger.warning("remote-connection is deprecated and moving to cli-core, use `webapp create-remote-connection`") webapp = show_webapp(cmd, resource_group_name, name, slot) is_linux = webapp.reserved if not is_linux: logger.error("Only Linux App Service Plans supported, Found a Windows App Service Plan") return import time profiles = list_publish_profiles(cmd, resource_group_name, name, slot) user_name = next(p['userName'] for p in profiles) user_password = next(p['userPWD'] for p in profiles) import threading from .tunnel import TunnelServer if port is None: port = 0 # Will auto-select a free port from 1024-65535 logger.info('No port defined, creating on random free port') host_name = name if slot is not None: host_name += "-" + slot tunnel_server = TunnelServer('', port, host_name, user_name, user_password) config = get_site_configs(cmd, resource_group_name, name, slot) _ping_scm_site(cmd, resource_group_name, name) t = threading.Thread(target=_start_tunnel, args=(tunnel_server, config.remote_debugging_enabled)) t.daemon = True t.start() # Wait indefinitely for CTRL-C while True: time.sleep(5)
def process_functionapp(self): """Helper to retrieve information about a functionapp""" if self.functionapp_name is None: functionapp = self._select_functionapp() self.functionapp_name = functionapp.name else: functionapp = self.cmd_selector.cmd_functionapp( self.functionapp_name) kinds = show_webapp(self.cmd, functionapp.resource_group, functionapp.name).kind.split(',') # Get functionapp settings in Azure app_settings = get_app_settings(self.cmd, functionapp.resource_group, functionapp.name) self.resource_group_name = functionapp.resource_group self.functionapp_type = self._find_type(kinds) try: self.functionapp_language = self._get_functionapp_runtime_language( app_settings) self.storage_name = self._get_functionapp_storage_name( app_settings) except LanguageNotSupportException as lnse: raise CLIError( "Sorry, currently we do not support {language}.".format( language=lnse.message)) from lnse
def test_show_webapp(self, file_ftp_mock, rename_mock, site_op_mock): faked_web = mock.MagicMock() site_op_mock.return_value = faked_web # action result = show_webapp('myRG', 'myweb', slot=None, app_instance=None) # assert (we invoke the site op) self.assertEqual(faked_web, result) self.assertTrue(rename_mock.called) self.assertTrue(file_ftp_mock.called)
def test_show_webapp(self, file_ftp_mock, rename_mock, site_op_mock): faked_web = mock.MagicMock() site_op_mock.return_value = faked_web # action result = show_webapp(mock.MagicMock(), 'myRG', 'myweb', slot=None, app_instance=None) # assert (we invoke the site op) self.assertEqual(faked_web, result) self.assertTrue(rename_mock.called) self.assertTrue(file_ftp_mock.called)
def start_scan(cmd, resource_group_name, name, timeout="", slot=None): webapp = show_webapp(cmd, resource_group_name, name, slot) is_linux = webapp.reserved if not is_linux: raise CLIError("Only Linux App Service Plans supported, Found a Windows App Service Plan") import requests user_name, password = _get_site_credential(cmd.cli_ctx, resource_group_name, name, slot) scm_url = _get_scm_url(cmd, resource_group_name, name, slot) start_scan_url = scm_url + '/api/scan/start/' + timeout import urllib3 authorization = urllib3.util.make_headers(basic_auth='{0}:{1}'.format(user_name, password)) headers = authorization headers['content-type'] = 'application/octet-stream' response = requests.get(start_scan_url, headers=authorization) return response.json()