Best Python code snippet using autotest_python
backup_restore.py
Source: backup_restore.py
1#!/usr/bin/env python2# Copyright (c) 2013 Riverbed Technology, Inc.3#4# This software is licensed under the terms and conditions of the 5# MIT License set forth at:6# https://github.com/riverbed/flyscript/blob/master/LICENSE ("License"). 7# This software is distributed "AS IS" as set forth in the License.8"""9This script performs backup and restores of configuration10to a Shark appliance.11"""12import sys13import json14import getpass15from rvbd.common.utils import DictObject16from rvbd.shark.app import SharkApp17class BackupApp(SharkApp):18 config_types = ['basic', 'auth', 'jobs', 'profiler_export', 'audit', 'protocols', 'users']19 def add_options(self, parser):20 parser.add_option('-f', '--filename',21 help='Filename to use for backup/restore')22 parser.add_option('-b', '--backup', action='store_true',23 help='Backup mode: store configuration to the specified file')24 parser.add_option('-r', '--restore', action='store_true',25 help='Restore mode: apply configuration from the specified file')26 parser.add_option('-t', '--types',27 help='Optional comma-separate list to limit the configuration '28 'type(s) to backup/restore (options are %s).' %29 (', '.join(self.config_types)))30 def main(self):31 if self.options.types is None:32 self.types = self.config_types33 else:34 self.types = self.options.types.split(',')35 for t in self.types:36 if not t in self.config_types:37 raise ValueError("Invalid configuration type %s" % t)38 if self.options.filename is None:39 raise ValueError("Must specify backup/restore file")40 if self.options.backup:41 self.backup()42 elif self.options.restore:43 self.restore()44 else:45 raise RuntimeError("either backup mode (-b) or restore mode (-r) "46 "must be specified")47 def backup(self):48 # First see if the file is there and if it has anything in it49 # already, parse it50 self.config = {}51 try:52 f = open(self.options.filename)53 self.config = json.load(f, object_hook=DictObject.create_from_dict)54 f.close()55 except Exception, e:56 print e, e.__class__57 print "Starting backup..."58 f = open(self.options.filename, 'w')59 for t in self.types:60 if t == 'basic':61 print "Backing up basic configuration..."62 self.config['basic'] = self.shark.api.settings.get_basic()63 elif t == 'auth':64 print "Backing up authentication settings..."65 self.config['auth'] = self.shark.api.settings.get_auth()66 elif t == 'audit':67 print "Backing up audit settings..."68 self.config['audit'] = self.shark.api.settings.get_audit()69 elif t == 'profiler_export':70 print "Backing up profiler export settings..."71 self.config['profiler_export'] = self.shark.api.settings.get_profiler_export()72 elif t == 'protocols':73 print "Backing up protocol names / protocol groups..."74 self.config['protocol_groups'] = self.shark.api.settings.get_protocol_groups()75 self.config['protocol_names'] = self.shark.api.settings.get_protocol_names()76 elif t == 'jobs':77 print "Backing up jobs..."78 self.config['jobs'] = [j.config for j in self.shark.api.jobs.get_all()]79 elif t == 'users':80 print "Backing up users and groups..."81 self.config['users'] = self.shark.api.auth.users.get_all()82 self.config['groups'] = self.shark.api.auth.groups.get_all()83 json.dump(self.config, f, indent=4)84 print "Backup complete."85 def restore(self):86 print 'This operation will overwrite any existing configuration on your '87 print 'Shark appliance. Please verify that you want to continue.'88 result = raw_input('Continue? [y/N] > ')89 if result not in ('Y', 'y'):90 print 'Okay, exiting.'91 sys.exit()92 f = open(self.options.filename)93 self.config = json.load(f, object_hook=DictObject.create_from_dict)94 f.close()95 print "Starting restore..."96 for t in self.types:97 if t == 'basic':98 print "Restoring basic configuration..."99 # XXX/demmer we may not want to do this since this100 # could change the IP address101 self.shark.api.settings.update_basic(self.config['basic'])102 elif t == 'auth':103 print "Restoring authentication settings..."104 self.shark.api.settings.update_auth(self.config['auth'])105 print "Restoring (reconnecting to shark...)"106 self.connect()107 elif t == 'audit':108 print "Restoring audit settings..."109 self.shark.api.settings.update_audit(self.config['audit'])110 elif t == 'profiler_export':111 print "Restoring profiler export settings..."112 self.shark.api.settings.update_profiler_export(self.config['profiler_export'])113 elif t == 'protocols':114 print "Restoring protocol names / protocol groups..."115 self.shark.api.settings.update_protocol_names(self.config['protocol_names'])116 self.shark.api.settings.update_protocol_groups(self.config['protocol_groups'])117 elif t == 'jobs':118 print "Restoring jobs..."119 # Don't blow away existing jobs with the same configuration120 job_config = self.shark.api.jobs.get_all()121 config_by_name = {}122 for j in job_config:123 config_by_name[j.config.name] = j.config124 for new_job in self.config['jobs']:125 if new_job.name in config_by_name:126 if new_job == config_by_name[new_job.name]:127 print "%s (skipped since already configured)..." % new_job.name128 else:129 print ("%s (ERROR: job exists with different configuration)..."130 % new_job.name)131 continue132 print "%s (configured)..." % new_job.name133 self.shark.api.jobs.add(new_job)134 elif t == 'users':135 print "Restoring groups..."136 # Don't blow away existing groups with the same configuration137 group_config = self.shark.api.auth.groups.get_all()138 config_by_name = {}139 for g in group_config:140 config_by_name[g.name] = g141 for new_group in self.config['groups']:142 if new_group.name in config_by_name:143 if new_group == config_by_name[new_group.name]:144 print "%s (skipped since already configured)..." % new_group.name145 else:146 print ("%s (ERROR: group exists with different configuration)..."147 % new_group.name)148 continue149 print "%s..." % new_group.name150 self.shark.api.auth.groups.add(new_group)151 print "Restoring users..."152 user_config = self.shark.api.auth.users.get_all()153 config_by_name = {}154 for u in user_config:155 config_by_name[u.name] = u156 for new_user in self.config['users']:157 if new_user.name in config_by_name:158 if new_user == config_by_name[new_user.name]:159 print "%s (skipped since already configured)..." % new_user.name160 else:161 print ("%s (ERROR: user exists with different configuration)..."162 % new_user.name)163 continue164 print "%s..." % new_user.name165 # Need to coerce the structure for a new user166 del new_user['is_admin']167 del new_user['is_locked']168 while True:169 passwd = getpass.getpass("Enter password: ")170 passwd2 = getpass.getpass("Enter password (again): ")171 if passwd != passwd2:172 print "ERROR: passwords do not match"173 continue174 new_user['password'] = passwd175 break176 self.shark.api.auth.users.add(new_user)177 print "Restore complete."178if __name__ == '__main__':...
application.py
Source: application.py
1import logging2from flask import Flask, Blueprint3from flask_sqlalchemy import SQLAlchemy4from flask_restplus import Api5from flask_jwt_extended import JWTManager6from .config import config_by_name7logging.basicConfig(level=logging.DEBUG, format='[%(asctime)s] %(levelname)s: %(message)s')8db = SQLAlchemy()9app = Flask(__name__, instance_relative_config=True)10app.config.from_object(config_by_name['dev'])11db.init_app(app)12jwt = JWTManager(app)13def create_app(config_name='dev'):14 global app15 app.config.from_object(config_by_name[config_name])16 bp = Blueprint('api', __name__, url_prefix='/api')17 api = Api(bp,18 title='WebApp',19 description='Add description here',20 version='0.0.1',21 security='Bearer Auth',22 authorizations={23 'Bearer Auth': {24 'type': 'apiKey',25 'in': 'header',26 'name': 'Authorization'27 },28 },29 ordered=True,30 terms_url='https://andrei.cioara.me',31 license='MIT',32 license_url='https://andrei.cioara.me',33 )34 from .views.dinosaur_views import api as dinosaur_ns35 api.add_namespace(dinosaur_ns)36 app.register_blueprint(bp)...
config.py
Source: config.py
1import os2base_dir = os.path.abspath(os.path.dirname(__file__))3class Config:4 SECRET_KEY = os.getenv("SECRET_KEY", os.urandom(24))5 DEBUG = False6class ProductConfig(Config): 7 MONGO_URI = "localhost:27017/"8 MONGO_DBNAME = "product_db"9class DevelopmentConfig(Config):10 DEBUG = True11 SECRET_KEY = "dev_secret_key"12 MONGO_URI = "localhost:27017/"13 MONGO_DBNAME = "dev_db"14class TestConfig(Config):15 DEBUG = True16 SECRET_KEY = "test_secret_key"17 MONGO_URI = "localhost:27017/"18 MONGO_DBNAME = "test_db"19config_by_name = dict(20 prod=ProductConfig,21 dev=DevelopmentConfig,22 test=TestConfig23)24def from_object(config_name=None):25 if config_name is not None:26 return config_by_name[config_name]27 env_config_name = os.getenv("FLASK_ENV", None)28 if env_config_name is not None:29 return config_by_name[env_config_name]30 31 default_config_name = 'dev'...
Check out the latest blogs from LambdaTest on this topic:
Before we discuss Scala testing, let us understand the fundamentals of Scala and how this programming language is a preferred choice for your development requirements.The popularity and usage of Scala are rapidly rising, evident by the ever-increasing open positions for Scala developers.
So, now that the first installment of this two fold article has been published (hence you might have an idea of what Agile Testing is not in my opinion), I’ve started feeling the pressure to explain what Agile Testing actually means to me.
Did you know that according to Statista, the number of smartphone users will reach 18.22 billion by 2025? Let’s face it, digital transformation is skyrocketing and will continue to do so. This swamps the mobile app development market with various options and gives rise to the need for the best mobile app testing tools
As a developer, checking the cross browser compatibility of your CSS properties is of utmost importance when building your website. I have often found myself excited to use a CSS feature only to discover that it’s still not supported on all browsers. Even if it is supported, the feature might be experimental and not work consistently across all browsers. Ask any front-end developer about using a CSS feature whose support is still in the experimental phase in most prominent web browsers. ????
The count of mobile users is on a steep rise. According to the research, by 2025, it is expected to reach 7.49 billion users worldwide. 70% of all US digital media time comes from mobile apps, and to your surprise, the average smartphone owner uses ten apps per day and 30 apps each month.
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!