def __init__(self): if not logger.factory_instance: logger.init(logging.DEBUG, True) self.log = logger.get_logger('{0}_installer'.format(APP_NAME)) self.app = api.get_app_setup(APP_NAME) self.database_path = join(self.app.get_data_dir(), 'database') self.occ = OCConsole(join(self.app.get_install_dir(), OCC_RUNNER_PATH))
def __init__(self, debug=False, config_dir=None): self.platform_config = PlatformConfig(config_dir=config_dir) if not logger.factory_instance: console = True if debug else False level = logging.DEBUG if debug else logging.INFO logger.init(level, console, join(self.platform_config.get_platform_log())) self.user_platform_config = PlatformUserConfig(self.platform_config.get_user_config()) self.log_aggregator = Aggregator(self.platform_config) self.platform_app_paths = AppPaths(PLATFORM_APP_NAME, self.platform_config) self.platform_app_paths.get_data_dir() self.versions = Versions(self.platform_config) self.redirect_service = RedirectService(self.user_platform_config, self.versions) self.port_config = PortConfig(self.platform_app_paths.get_data_dir()) self.nat_pmp_port_mapper = NatPmpPortMapper() self.upnp_port_mapper = UpnpPortMapper(UPnP()) self.port_mapper_factory = PortMapperFactory(self.nat_pmp_port_mapper, self.upnp_port_mapper) self.port_drill_factory = PortDrillFactory(self.user_platform_config, self.port_config, self.port_mapper_factory) self.device_info = DeviceInfo(self.user_platform_config, self.port_config) if self.platform_config.get_installer() == 'sam': self.sam = SamStub(self.platform_config, self.device_info) else: self.sam = Snap(self.platform_config, self.device_info) self.platform_cron = PlatformCron(self.platform_config) self.systemctl = Systemctl(self.platform_config) self.ldap_auth = LdapAuth(self.platform_config, self.systemctl) self.event_trigger = EventTrigger(self.sam, self.platform_config) self.nginx = Nginx(self.platform_config, self.systemctl, self.device_info) self.certbot_genetator = CertbotGenerator(self.platform_config, self.user_platform_config, self.device_info, self.sam) self.tls = CertificateGenerator(self.platform_config, self.user_platform_config, self.device_info, self.nginx, self.certbot_genetator) self.device = Device(self.platform_config, self.user_platform_config, self.redirect_service, self.port_drill_factory, self.sam, self.platform_cron, self.ldap_auth, self.event_trigger, self.tls, self.nginx) self.internal = Internal(self.platform_config, self.device, self.redirect_service, self.log_aggregator) self.path_checker = PathChecker(self.platform_config) self.lsblk = Lsblk(self.platform_config, self.path_checker) self.hardware = Hardware(self.platform_config, self.event_trigger, self.lsblk, self.path_checker, self.systemctl) self.network = Network() self.public = Public(self.platform_config, self.user_platform_config, self.device, self.device_info, self.sam, self.hardware, self.redirect_service, self.log_aggregator, self.certbot_genetator, self.port_mapper_factory, self.network, self.port_config) self.udev = Udev(self.platform_config)
def create_web_app(data_dir): config = BrowserConfig(data_dir) logger.init(logging.INFO, False, join(config.get_browser_log())) browser = Browser(config) app = Flask(__name__) app.config['SECRET_KEY'] = config.get_web_secret_key() login_manager = LoginManager() login_manager.init_app(app) html_prefix = '' rest_prefix = '/rest' @login_manager.unauthorized_handler def _callback(): if request.is_xhr: return 'Unauthorised', 401 else: return redirect(html_prefix + '/login.html') @app.route(html_prefix + '/<path:filename>') @nocache def static_file(filename): return send_from_directory(config.www_root(), filename) @login_manager.user_loader def load_user(email): return FlaskUser(User(email)) @app.route(rest_prefix + "/login", methods=["GET", "POST"]) def login(): if 'name' in request.form and 'password' in request.form: try: authenticate(request.form['name'], request.form['password']) user_flask = FlaskUser(User(request.form['name'])) login_user(user_flask, remember=False) # next_url = request.get('next_url', '/') return redirect("/") except Exception, e: traceback.print_exc(file=sys.stdout) return jsonify(message=e.message), 400 return jsonify(message='missing name or password'), 400
def __init__(self, debug=False): self.platform_config = PlatformConfig() if not logger.factory_instance: console = True if debug else False level = logging.DEBUG if debug else logging.INFO logger.init(level, console, join(self.platform_config.get_platform_log())) self.user_platform_config = PlatformUserConfig(self.platform_config.get_user_config()) self.log_aggregator = Aggregator(self.platform_config) self.platform_app_paths = AppPaths(PLATFORM_APP_NAME, self.platform_config) self.platform_app_paths.get_data_dir() self.redirect_service = RedirectService(self.user_platform_config, platform_version) self.port_config = PortConfig(self.platform_app_paths.get_data_dir()) self.nat_pmp_port_mapper = NatPmpPortMapper() self.upnp_port_mapper = UpnpPortMapper(UPnP()) self.port_drill_factory = PortDrillFactory(self.user_platform_config, self.port_config, self.nat_pmp_port_mapper, self.upnp_port_mapper) self.info = DeviceInfo(self.user_platform_config, self.port_config) self.sam = SamStub(self.platform_config, self.info) self.platform_cron = PlatformCron(self.platform_config) self.ldap_auth = LdapAuth(self.platform_config) self.event_trigger = EventTrigger(self.sam) self.nginx = Nginx(self.platform_config) self.tls = Tls(self.platform_config, self.info, self.nginx) self.device = Device(self.platform_config, self.user_platform_config, self.redirect_service, self.port_drill_factory, self.sam, self.platform_cron, self.ldap_auth, self.event_trigger, self.tls) self.internal = Internal(self.platform_config, self.device, self.redirect_service, self.log_aggregator) self.path_checker = PathChecker(self.platform_config) self.lsblk = Lsblk(self.platform_config, self.path_checker) self.hardware = Hardware(self.platform_config, self.event_trigger, self.lsblk, self.path_checker) self.public = Public(self.platform_config, self.user_platform_config, self.device, self.info, self.sam, self.hardware, self.redirect_service, self.log_aggregator) self.udev = Udev(self.platform_config)
from syncloud_app import logger from syncloud_platform.disks.hardware import has_unallocated_space_at_the_end from syncloud_platform.disks.lsblk import Disk, Partition logger.init(console=True) def test_has_unallocated_space_at_the_end_low_percent(): parted = '''BYT; /dev/sda:100%:scsi:512:512:msdos:ATA KINGSTON SV300S3:; 1:0.00%:0.00%:0.00%:free; 1:0.00%:1.67%:1.67%:::; 2:1.67%:100%:98.3%:ext4::; 1:100%:100%:0.00%:free;''' assert has_unallocated_space_at_the_end(parted) == False def test_has_unallocated_space_at_the_end_high_percent(): parted = '''BYT; /dev/sda:100%:scsi:512:512:msdos:ATA KINGSTON SV300S3:; 1:0.00%:0.00%:0.00%:free; 1:0.00%:1.67%:1.67%:::; 2:1.67%:100%:98.3%:ext4::; 1:100%:100%:12.34%:free;''' assert has_unallocated_space_at_the_end(parted) == True
import sys import logging from syncloud_app import logger from syncloud_platform.events import run_hook_script logger.init(logging.DEBUG, console=True, line_format='%(message)s') apps_dir = sys.argv[1] app_id = sys.argv[2] hook_script = sys.argv[3] run_hook_script(apps_dir, app_id, hook_script)
sub.add_argument('app_id', help="application id") sub = subparsers.add_parser('release', help="make/update release") sub.add_argument('source', help="existing release to copy from") sub.add_argument('target', help="release that will be created/updated") sub.add_argument('--override', nargs='*', help='apps versions overrides in format: <app>=<version>', default=[]) #TODO: Not sure why do we need this subparsers.add_parser('upgrade_all', help="upgrade apps and install required apps") return parser if __name__ == '__main__': arg_parser = get_arg_parser() args = arg_parser.parse_args() console = True if args.debug else False level = logging.DEBUG if args.debug else logging.INFO logger.init(level, console, '/var/log/sam.log') sam_home = normpath(join(dirname(__file__), '..')) sam = get_sam(sam_home) main.execute(sam, args, exit_code_on_error=1)
import sys import logging from syncloud_app import logger from syncloud_platform.gaplib.scripts import run_script logger.init(logging.DEBUG, console=True, line_format='%(message)s') run_script(sys.argv[1])
from syncloud_app import logger import sys, os myPath = os.path.dirname(os.path.abspath(__file__)) sys.path.insert(0, os.path.abspath(join(myPath, '../..'))) print(sys.path) from syncloud_sam.manager import get_sam from syncloud_sam.config import SamConfig from subprocess import check_output import tarfile test_dir = dirname(__file__) logger.init(logging.DEBUG, console=True) test_temp_dir = '/tmp/sam-tests' def temp_dir(): if not isdir(test_temp_dir): makedirs(test_temp_dir) return tempfile.mkdtemp(dir=test_temp_dir) def text_file(path, filename, text=''): app_path = join(path, filename) if not isdir(path): makedirs(path) if isfile(app_path): remove(app_path) f = open(app_path, 'w')
from syncloud_app import logger import sys, os myPath = os.path.dirname(os.path.abspath(__file__)) sys.path.insert(0, os.path.abspath(join(myPath, '../..'))) print(sys.path) from syncloud_sam.manager import get_sam from syncloud_sam.config import SamConfig from subprocess import check_output import tarfile test_dir = dirname(__file__) logger.init(logging.DEBUG, console=True) test_temp_dir = '/tmp/sam-tests' def temp_dir(): if not isdir(test_temp_dir): makedirs(test_temp_dir) return tempfile.mkdtemp(dir=test_temp_dir) def text_file(path, filename, text=''): app_path = join(path, filename) if not isdir(path): makedirs(path) if isfile(app_path):
from os.path import dirname, join import convertible from syncloud_app import logger from syncloud_platform.config.config import PlatformConfig from syncloud_platform.disks.lsblk import Lsblk from syncloud_platform.disks.path_checker import PathChecker DIR = dirname(__file__) CONFIG_DIR = join(dirname(__file__), '..', '..', '..', 'config') logger.init(console=True) def get_lsblk(): platform_config = PlatformConfig(CONFIG_DIR) return Lsblk(platform_config, PathChecker(platform_config)) def test_list(): disks = get_lsblk().available_disks(open(join(DIR, 'hardware', 'lsblk')).read()) assert len(disks) == 3 assert len(disks[0].partitions) == 1 assert disks[1].partitions[2].mount_point == '/opt/disk/external' assert len(disks[1].partitions) == 3 def test_loop_support():
sub = subparsers.add_parser('upgrade', help="upgrade an app") sub.add_argument('app_id', help="application id") sub = subparsers.add_parser('version', help="get version of the app") sub.add_argument('release', help="release") sub.add_argument('app_id', help="application id") sub = subparsers.add_parser('release', help="make/update release") sub.add_argument('source', help="existing release to copy from") sub.add_argument('target', help="release that will be created/updated") sub.add_argument('--override', nargs='*', help='apps versions overrides in format: <app>=<version>', default=[]) #TODO: Not sure why do we need this subparsers.add_parser('upgrade_all', help="upgrade apps and install required apps") return parser if __name__ == '__main__': arg_parser = get_arg_parser() args = arg_parser.parse_args() console = True if args.debug else False level = logging.DEBUG if args.debug else logging.INFO logger.init(level, console, '/var/log/sam.log') sam_home = normpath(join(dirname(__file__), '..')) sam = get_sam(sam_home) main.execute(sam, args, exit_code_on_error=1)
import logging from mock import MagicMock import pytest from syncloud_app import logger logger.init(logging.DEBUG, True) @pytest.fixture(scope="session") def sam(): sam = MagicMock() sam.update = MagicMock(return_value=True) sam.upgrade_all = MagicMock(return_value=True) return sam @pytest.fixture(scope="session") def insider(): insider = MagicMock() insider.acquire_domain = MagicMock(return_value=True) return insider @pytest.fixture(scope="session") def apache(): apache = MagicMock() apache.activate = MagicMock() return apache