示例#1
0
    def uninstall_extension(self, extension_name):
        """Uninstall the extension with name extension_name"""
        
        self.logger.log("Request to remove extension with name %s" % extension_name, level=2)
        
        # Find the subdirectory containing this extension's installer
        extension_installer_dir = os.path.join(self.root_dict['EXT_ROOT'], extension_name)
        # Retrieve it
        _, installer = weecfg.get_extension_installer(extension_installer_dir)

        # Remove any files that were added:
        self.uninstall_files(installer)
                
        save_config = False

        # Remove any services we added
        for service_group in all_service_groups:
            if service_group in installer:
                new_list = filter(lambda x : x not in installer[service_group], 
                                  self.config_dict['Engine']['Services'][service_group])
                if not self.dry_run:
                    self.config_dict['Engine']['Services'][service_group] = new_list
                    save_config = True
        
        # Remove any sections we added
        if 'config' in installer and not self.dry_run:
            weecfg.remove_and_prune(self.config_dict, installer['config'])
            save_config = True
        
        if not self.dry_run:
            # Finally, remove the extension's installer subdirectory:
            shutil.rmtree(extension_installer_dir)
        
        if save_config:
            weecfg.save_with_backup(self.config_dict, self.config_path)
示例#2
0
    def uninstall_extension(self, extension_name):
        """Uninstall the extension with name extension_name"""

        self.logger.log("Request to remove extension '%s'" % extension_name)

        # Find the subdirectory containing this extension's installer
        extension_installer_dir = os.path.join(self.root_dict['EXT_ROOT'],
                                               extension_name)
        try:
            # Retrieve it
            _, installer = weecfg.get_extension_installer(
                extension_installer_dir)
        except weecfg.ExtensionError:
            sys.exit("Unable to find extension %s" % extension_name)

        # Remove any files that were added:
        self.uninstall_files(installer)

        save_config = False

        # Remove any services we added
        for service_group in all_service_groups:
            if service_group in installer:
                new_list = filter(
                    lambda x: x not in installer[service_group],
                    self.config_dict['Engine']['Services'][service_group])
                if not self.dry_run:
                    self.config_dict['Engine']['Services'][
                        service_group] = new_list
                    save_config = True

        # Remove any sections we added
        if 'config' in installer and not self.dry_run:
            weecfg.remove_and_prune(self.config_dict, installer['config'])
            save_config = True

        if not self.dry_run:
            # Finally, remove the extension's installer subdirectory:
            shutil.rmtree(extension_installer_dir)

        if save_config:
            weecfg.save_with_backup(self.config_dict, self.config_path)

        self.logger.log("Finished removing extension '%s'" % extension_name)
示例#3
0
    def uninstall_extension(self, extension_name):
        """Uninstall the extension with name extension_name"""

        self.logger.log("Request to remove extension '%s'" % extension_name)

        # Find the subdirectory containing this extension's installer
        extension_installer_dir = os.path.join(self.root_dict["EXT_ROOT"], extension_name)
        try:
            # Retrieve it
            _, installer = weecfg.get_extension_installer(extension_installer_dir)
        except weecfg.ExtensionError:
            sys.exit("Unable to find extension %s" % extension_name)

        # Remove any files that were added:
        self.uninstall_files(installer)

        save_config = False

        # Remove any services we added
        for service_group in all_service_groups:
            if service_group in installer:
                new_list = filter(
                    lambda x: x not in installer[service_group], self.config_dict["Engine"]["Services"][service_group]
                )
                if not self.dry_run:
                    self.config_dict["Engine"]["Services"][service_group] = new_list
                    save_config = True

        # Remove any sections we added
        if "config" in installer and not self.dry_run:
            weecfg.remove_and_prune(self.config_dict, installer["config"])
            save_config = True

        if not self.dry_run:
            # Finally, remove the extension's installer subdirectory:
            shutil.rmtree(extension_installer_dir)

        if save_config:
            weecfg.save_with_backup(self.config_dict, self.config_path)

        self.logger.log("Finished removing extension '%s'" % extension_name)