Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
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()