# Path: cloudify_agent/api/utils.py
# class _Internal(object):
#     CLOUDIFY_DAEMON_STORAGE_DIRECTORY_KEY = 'CLOUDIFY_DAEMON_STORAGE_DIRECTORY'
#     CLOUDIFY_DAEMON_USER_KEY = 'CLOUDIFY_DAEMON_USER'
#     def get_daemon_storage_dir(cls):
#     def get_daemon_user(cls):
#     def get_storage_directory(cls, username=None):
#     def generate_agent_name():
#     def generate_new_agent_name(old_agent_name):
#     def daemon_to_dict(daemon):
#     def get_broker_url(agent):
# def get_agent_registered(name,
#                          celery_client,
#                          timeout=workflows_tasks.INSPECT_TIMEOUT):
# def get_windows_home_dir(username):
# def get_home_dir(username=None):
# def render_template_to_file(template_path, file_path=None, **values):
# def resource_to_tempfile(resource_path, executable=False):
# def get_resource(resource_path):
# def get_absolute_resource_path(resource_path):
# def content_to_file(content, file_path=None, executable=False):
# def env_to_file(env_variables, destination_path=None, posix=True):
# def stringify_values(dictionary):
# def purge_none_values(dictionary):
# def json_load(file_path):
# def json_loads(content):
# def safe_create_dir(path):
# def get_rest_client(rest_host,
#                     rest_port,
#                     rest_token,
#                     rest_tenant,
#                     ssl_cert_path,
#                     bypass_maintenance_mode=False):
# def _parse_comma_separated(ctx, param, value):
# def get_manager_file_server_url(hostname, port, scheme=None):
# def get_agent_version():
# def get_windows_basedir():
# def get_linux_basedir():
# def get_agent_basedir(is_windows=False):
# 
# Path: cloudify_agent/api/utils.py
# class _Internal(object):
#     CLOUDIFY_DAEMON_STORAGE_DIRECTORY_KEY = 'CLOUDIFY_DAEMON_STORAGE_DIRECTORY'
#     CLOUDIFY_DAEMON_USER_KEY = 'CLOUDIFY_DAEMON_USER'
#     def get_daemon_storage_dir(cls):
#     def get_daemon_user(cls):
#     def get_storage_directory(cls, username=None):
#     def generate_agent_name():
#     def generate_new_agent_name(old_agent_name):
#     def daemon_to_dict(daemon):
#     def get_broker_url(agent):
# def get_agent_registered(name,
#                          celery_client,
#                          timeout=workflows_tasks.INSPECT_TIMEOUT):
# def get_windows_home_dir(username):
# def get_home_dir(username=None):
# def render_template_to_file(template_path, file_path=None, **values):
# def resource_to_tempfile(resource_path, executable=False):
# def get_resource(resource_path):
# def get_absolute_resource_path(resource_path):
# def content_to_file(content, file_path=None, executable=False):
# def env_to_file(env_variables, destination_path=None, posix=True):
# def stringify_values(dictionary):
# def purge_none_values(dictionary):
# def json_load(file_path):
# def json_loads(content):
# def safe_create_dir(path):
# def get_rest_client(rest_host,
#                     rest_port,
#                     rest_token,
#                     rest_tenant,
#                     ssl_cert_path,
#                     bypass_maintenance_mode=False):
# def _parse_comma_separated(ctx, param, value):
# def get_manager_file_server_url(hostname, port, scheme=None):
# def get_agent_version():
# def get_windows_basedir():
# def get_linux_basedir():
# def get_agent_basedir(is_windows=False):


    import winrm
import ntpath
from cloudify.exceptions import CommandExecutionException
from cloudify.exceptions import CommandExecutionError
from cloudify.utils import CommandExecutionResponse
from cloudify.utils import setup_logger
from cloudify_agent.installer import utils
from cloudify_agent.api import utils as api_utils
from cloudify_rest_client.utils import is_kerberos_env
from functools import reduce
        else:
            return winrm.Session(
                target=winrm_url,
                auth=(self.session_config['user'],
                      self.session_config['password']),
                transport=self.session_config['transport'])

    def run(self, command, raise_on_failure=True, execution_env=None,
            powershell=False):

        """
        :param command: The command to execute.
        :param raise_on_failure: by default, this will raise an exception
                                 if the command fails. You can use
                                 raise_on_failure=False to just log the
                                 error and not raise an exception.
        :param execution_env: environment variables to be applied before
                              running the command
        :param powershell: Determines where to run command as a powershell
                           script.

        :return a response object with information about the execution
        :rtype WinRMCommandExecutionResponse.
        """

        if execution_env is None:
            execution_env = {}

        remote_env_file = None
        if execution_env:

# Path: cloudify_agent/api/utils.py
# class _Internal(object):
#     CLOUDIFY_DAEMON_STORAGE_DIRECTORY_KEY = 'CLOUDIFY_DAEMON_STORAGE_DIRECTORY'
#     CLOUDIFY_DAEMON_USER_KEY = 'CLOUDIFY_DAEMON_USER'
#     def get_daemon_storage_dir(cls):
#     def get_daemon_user(cls):
#     def get_storage_directory(cls, username=None):
#     def generate_agent_name():
#     def generate_new_agent_name(old_agent_name):
#     def daemon_to_dict(daemon):
#     def get_broker_url(agent):
# def get_agent_registered(name,
#                          celery_client,
#                          timeout=workflows_tasks.INSPECT_TIMEOUT):
# def get_windows_home_dir(username):
# def get_home_dir(username=None):
# def render_template_to_file(template_path, file_path=None, **values):
# def resource_to_tempfile(resource_path, executable=False):
# def get_resource(resource_path):
# def get_absolute_resource_path(resource_path):
# def content_to_file(content, file_path=None, executable=False):
# def env_to_file(env_variables, destination_path=None, posix=True):
# def stringify_values(dictionary):
# def purge_none_values(dictionary):
# def json_load(file_path):
# def json_loads(content):
# def safe_create_dir(path):
# def get_rest_client(rest_host,
#                     rest_port,
#                     rest_token,
#                     rest_tenant,
#                     ssl_cert_path,
#                     bypass_maintenance_mode=False):
# def _parse_comma_separated(ctx, param, value):
# def get_manager_file_server_url(hostname, port, scheme=None):
# def get_agent_version():
# def get_windows_basedir():
# def get_linux_basedir():
# def get_agent_basedir(is_windows=False):
# 
# Path: cloudify_agent/api/utils.py
# class _Internal(object):
#     CLOUDIFY_DAEMON_STORAGE_DIRECTORY_KEY = 'CLOUDIFY_DAEMON_STORAGE_DIRECTORY'
#     CLOUDIFY_DAEMON_USER_KEY = 'CLOUDIFY_DAEMON_USER'
#     def get_daemon_storage_dir(cls):
#     def get_daemon_user(cls):
#     def get_storage_directory(cls, username=None):
#     def generate_agent_name():
#     def generate_new_agent_name(old_agent_name):
#     def daemon_to_dict(daemon):
#     def get_broker_url(agent):
# def get_agent_registered(name,
#                          celery_client,
#                          timeout=workflows_tasks.INSPECT_TIMEOUT):
# def get_windows_home_dir(username):
# def get_home_dir(username=None):
# def render_template_to_file(template_path, file_path=None, **values):
# def resource_to_tempfile(resource_path, executable=False):
# def get_resource(resource_path):
# def get_absolute_resource_path(resource_path):
# def content_to_file(content, file_path=None, executable=False):
# def env_to_file(env_variables, destination_path=None, posix=True):
# def stringify_values(dictionary):
# def purge_none_values(dictionary):
# def json_load(file_path):
# def json_loads(content):
# def safe_create_dir(path):
# def get_rest_client(rest_host,
#                     rest_port,
#                     rest_token,
#                     rest_tenant,
#                     ssl_cert_path,
#                     bypass_maintenance_mode=False):
# def _parse_comma_separated(ctx, param, value):
# def get_manager_file_server_url(hostname, port, scheme=None):
# def get_agent_version():
# def get_windows_basedir():
# def get_linux_basedir():
# def get_agent_basedir(is_windows=False):


# Path: cloudify_agent/installer/runners/winrm_runner.py
    import winrm
import ntpath
from cloudify.exceptions import CommandExecutionException
from cloudify.exceptions import CommandExecutionError
from cloudify.utils import CommandExecutionResponse
from cloudify.utils import setup_logger
from cloudify_agent.installer import utils
from cloudify_agent.api import utils as api_utils
from cloudify_rest_client.utils import is_kerberos_env
from functools import reduce

        else:
            return winrm.Session(
                target=winrm_url,
                auth=(self.session_config['user'],
                      self.session_config['password']),
                transport=self.session_config['transport'])

    def run(self, command, raise_on_failure=True, execution_env=None,
            powershell=False):

        """
        :param command: The command to execute.
        :param raise_on_failure: by default, this will raise an exception
                                 if the command fails. You can use
                                 raise_on_failure=False to just log the
                                 error and not raise an exception.
        :param execution_env: environment variables to be applied before
                              running the command
        :param powershell: Determines where to run command as a powershell
                           script.

        :return a response object with information about the execution
        :rtype WinRMCommandExecutionResponse.
        """

        if execution_env is None:
            execution_env = {}

        remote_env_file = None
        if execution_env:

            env_file = utils.env_to_file(execution_env, posix=False)