def init_script(self, agent_config=None): if (utils.internal.get_install_method(self.context.node.properties) not in constants.AGENT_INSTALL_METHODS_SCRIPTS): return None self._validate_agent_env() from cloudify_agent.installer import script return script.init_script(cloudify_agent=agent_config)
def install_script(name, windows, user, manager_ip): ctx = MockCloudifyContext( node_id='node', properties={'agent_config': { 'user': user, 'windows': windows, 'install_method': 'provided', 'manager_ip': manager_ip, 'name': name }}) try: current_ctx.set(ctx) os.environ['MANAGER_FILE_SERVER_URL'] = 'http://{0}:53229'.format( manager_ip) init_script = script.init_script(cloudify_agent={}) finally: os.environ.pop('MANAGER_FILE_SERVER_URL') current_ctx.clear() result = '\n'.join(init_script.split('\n')[:-1]) if windows: return '{0}\n' \ 'DownloadAndExtractAgentPackage\n' \ 'ExportDaemonEnv\n' \ 'ConfigureAgent'.format(result) else: return '{0}\n' \ 'install_agent'.format(result)
def init_script(self, agent_config=None): if (utils.internal.get_install_method( self.context.node.properties) not in constants.AGENT_INSTALL_METHODS_SCRIPTS): return None self._validate_agent_env() from cloudify_agent.installer import script return script.init_script(cloudify_agent=agent_config)
def init_script(self, agent_config=None): if (utils.internal.get_install_method(self.context.node.properties) not in constants.AGENT_INSTALL_METHODS_SCRIPTS): return None try: from cloudify_agent.installer import script except ImportError as e: raise exceptions.NonRecoverableError( 'init_script cannot be used outside of an agent environment: ' 'ImportError: {0}'.format(e)) return script.init_script(cloudify_agent=agent_config)
def init_script(self, agent_config=None): if (utils.internal.get_install_method( self.context.node.properties) not in constants.AGENT_INSTALL_METHODS_SCRIPTS): return None try: from cloudify_agent.installer import script except ImportError as e: raise exceptions.NonRecoverableError( 'init_script cannot be used outside of an agent environment: ' 'ImportError: {0}'.format(e)) return script.init_script(cloudify_agent=agent_config)
def install_script(name, windows, user, manager_host): env_vars = {} env_vars[constants.MANAGER_FILE_SERVER_URL_KEY] = '{0}://{1}:{2}'.format( defaults.FILE_SERVER_PROTOCOL, manager_host, defaults.FILE_SERVER_PORT) env_vars[constants.FILE_SERVER_PORT_KEY] = str(defaults.FILE_SERVER_PORT) env_vars[constants.FILE_SERVER_PROTOCOL_KEY] = \ defaults.FILE_SERVER_PROTOCOL env_vars[constants.REST_PORT_KEY] = str(defaults.REST_PORT) env_vars[constants.REST_PROTOCOL_KEY] = defaults.REST_PROTOCOL env_vars[constants.SECURITY_ENABLED_KEY] = str(defaults.SECURITY_ENABLED) env_vars[constants.VERIFY_REST_CERTIFICATE_KEY] = \ str(defaults.VERIFY_REST_CERTIFICATE) env_vars[constants.REST_CERT_CONTENT_KEY] = '' ctx = MockCloudifyContext( node_id='node', properties={'agent_config': { 'user': user, 'windows': windows, 'install_method': 'provided', 'rest_host': manager_host, 'file_server_host': manager_host, 'broker_ip': manager_host, 'name': name }}) try: current_ctx.set(ctx) os.environ.update(env_vars) init_script = script.init_script(cloudify_agent={}) finally: for var_name in env_vars.iterkeys(): os.environ.pop(var_name) current_ctx.clear() result = '\n'.join(init_script.split('\n')[:-1]) if windows: return '{0}\n' \ 'DownloadAndExtractAgentPackage\n' \ 'ExportDaemonEnv\n' \ 'ConfigureAgent'.format(result) else: return '{0}\n' \ 'install_agent'.format(result)
def _run(self, *commands): init_script = script.init_script( cloudify_agent=self.input_cloudify_agent) init_script = '\n'.join(init_script.split('\n')[:-1]) if self.windows: init_script_path = os.path.abspath('init_script.ps1') else: init_script_path = os.path.abspath('init_script.sh') with open(init_script_path, 'w') as f: f.write(init_script) for command in commands: f.write('{0}\n'.format(command)) if not self.windows: os.chmod(init_script_path, 0755) if self.windows: command_line = 'powershell {0}'.format(init_script_path) else: command_line = init_script_path runner = cloudify_utils.LocalCommandRunner(self.logger) response = runner.run(command_line) return response.std_out