def run_ansible_playbook_module(install_file_path): """ Run the install.yml file through an Ansible playbook using the dedicated neuron ! :param install_file_path: the path of the Ansible playbook to run. :return: """ logger.debug("[ResourcesManager] Run ansible playbook") Utils.print_info("Starting neuron installation") # ask the sudo password pswd = getpass.getpass('Sudo password:') if not pswd or pswd == "": Utils.print_warning("You must enter a sudo password") return False else: ansible_neuron_parameters = { "task_file": install_file_path, "sudo": True, "sudo_user": "******", "sudo_password": pswd } neuron = Neuron(name="ansible_playbook", parameters=ansible_neuron_parameters) NeuronLauncher.start_neuron(neuron) return True
def uninstall(self, neuron_name=None, tts_name=None, stt_name=None, trigger_name=None, signal_name=None): """ Uninstall a community resource """ target_path_to_delete = None module_name = "" if neuron_name is not None: target_path_to_delete = self._get_target_folder( resources=self.settings.resources, module_type=TYPE_NEURON) module_name = neuron_name if tts_name is not None: target_path_to_delete = self._get_target_folder( resources=self.settings.resources, module_type=TYPE_TTS) module_name = tts_name if stt_name is not None: target_path_to_delete = self._get_target_folder( resources=self.settings.resources, module_type=TYPE_STT) module_name = stt_name if trigger_name is not None: target_path_to_delete = self._get_target_folder( resources=self.settings.resources, module_type=TYPE_TRIGGER) module_name = trigger_name if signal_name is not None: target_path_to_delete = self._get_target_folder( resources=self.settings.resources, module_type=TYPE_SIGNAL) module_name = signal_name if target_path_to_delete is not None: try: shutil.rmtree(target_path_to_delete + os.sep + module_name.lower()) Utils.print_success("Module %s deleted" % module_name.lower()) except shutil.Error: Utils.print_warning( "The module %s doest not exist in the path %s" % (module_name.lower(), target_path_to_delete)) except OSError: Utils.print_warning( "The module %s doest not exist in the path %s" % (module_name.lower(), target_path_to_delete))
def _check_supported_version(current_version, supported_versions): """ The dna file contains supported Intelora version for the module to install. Check if supported versions are match the current installed version. If not, ask the user to confirm the installation anyway :param current_version: current version installed of Intelora. E.g 0.4.0 :param supported_versions: list of supported version :return: True if the version is supported or user has confirmed the installation """ logger.debug( "[ResourcesManager] Current installed version of Intelora: %s" % str(current_version)) logger.debug("[ResourcesManager] Module supported version: %s" % str(supported_versions)) supported_version_found = False # Extract major version match_current_version = re.search('^[\d]*[.][\d]*', current_version) if match_current_version: current_version = match_current_version.group(0) for supported_version in supported_versions: if version.parse(str(current_version)) == version.parse( str(supported_version)): # we found the exact version supported_version_found = True break if not supported_version_found: # we ask the user if we want to install the module even if the version doesn't match Utils.print_info("Current installed version of Intelora: %s" % current_version) Utils.print_info("Module supported versions: %s" % str(supported_versions)) Utils.print_warning( "The neuron seems to be not supported by your current version of Intelora" ) supported_version_found = Utils.query_yes_no("install it anyway?") logger.debug( "[ResourcesManager] install it anyway user answer: %s" % supported_version_found) logger.debug("[ResourcesManager] check_supported_version: %s" % str(supported_version_found)) return supported_version_found
def _rename_temp_folder(name, target_folder, tmp_path): """ Rename the temp folder of the cloned repo Return the name of the path to install :return: path to install, None if already exists """ logger.debug("[ResourcesManager] Rename temp folder") new_absolute_neuron_path = target_folder + os.sep + name try: shutil.move(tmp_path, new_absolute_neuron_path) return new_absolute_neuron_path except shutil.Error: # the folder already exist Utils.print_warning("The module %s already exist in the path %s" % (name, target_folder)) # remove the cloned repo logger.debug("[ResourcesManager] Deleting temp folder %s" % str(tmp_path)) shutil.rmtree(tmp_path)