def forest(self, forest_name, host=None, connection=None): """ Get the named forest. """ if host is None: if connection is None: db = Forest(forest_name, connection=self.connection, save_connection=self.save_connection) else: db = Forest(forest_name, connection=connection, save_connection=False) else: if connection is None: db = Forest(forest_name, host.host_name(), connection=self.connection, save_connection=self.save_connection) else: db = Forest(forest_name, host.host_name(), connection=connection, save_connection=False) if connection is None: return db.read(self.connection) else: return db.read(connection)
def create(self, args, config, connection): forest = Forest(args['name'], args['forest_host'], connection=connection) if forest.exists(): self.logger.error("Forest already exists: {0}".format( args['name'])) sys.exit(1) if args['json'] is not None: forest = self._read(args['name'], args['json']) if forest.host() is None: forest.set_host(args['forest_host']) self._properties(forest, args) dbname = forest.database() if dbname is not None: database = Database(dbname) database.read(connection) else: database = None self.logger.info("Create forest {0}...".format(args['name'])) forest.create(connection=connection) if database is not None: database.add_forest_name(forest.forest_name()) database.update(connection)
def get(self, args, config, connection): forest = Forest(args['name'], connection=connection) if not forest.exists(): print("Error: Forest does not exist: {0}".format(args['name'])) sys.exit(1) forest.read() self.jprint(forest)
def delete(self, args, config, connection): forest = Forest(args['name'], args['forest_host'], connection=connection) if not forest.exists(): return level = args['level'] replicas = args['replicas'] print("Delete forest {0}...".format(args['name'])) forest.delete(level, replicas, connection)
def modify(self, args, config, connection): name = args['name'] forest = Forest(name, connection=connection) if not forest.exists(): print("Error: Forest does not exist: {0}".format(name)) sys.exit(1) if args['json'] is not None: forest = self._read(None, args['json'], connection=connection) if forest.host() is None and 'forest_host' in args: forest.set_host(args['forest_host']) forest.name = name self._properties(forest, args) print("Modify forest {0}...".format(name)) forest.update(connection=connection)
def create(self, args, config, connection): name = args['name'] host = args['forest_host'] if args['json'] is not None: forest = self._read(name, args['json'], connection=connection) name = forest.forest_name() host = forest.host() else: forest = Forest(name, host, connection=connection) if forest.exists(): self.logger.error("Forest already exists: {0}".format(name)) sys.exit(1) self._properties(forest, args) dbname = forest.database() # Strip out properties that we know the server will reject cluster = LocalCluster(connection) cluster.read() if cluster.security_version() is None: for key in ['database-replication', 'failover-enable']: if key in forest._config: del (forest._config[key]) self.logger.debug( "Ignoring {0}, not supported by server".format(key)) if dbname is not None: database = Database(dbname) database.read(connection) else: database = None self.logger.info("Create forest {0}...".format(name)) forest.create(connection=connection) if database is not None: database.add_forest_name(forest.forest_name()) database.update(connection)
user.set_password(base64.urlsafe_b64encode(os.urandom(32)).decode('utf-8')) print("{0} user: {1}".format(verb, name)) user.create(conn) else: verb = "Updating" user = User.unmarshal(config) print("{0} user: {1}".format(verb, name)) user.update(conn) # Create forests for config in data['forests']: name = config['forest-name'] f = Forest.lookup(conn, name) if f is None: print("Need to create forest: {0}".format(name)) f = Forest(name) f.create(conn) # Update forests for config in data['forests']: name = config['forest-name'] f = Forest.unmarshal(config) print("Updating forest: {0}".format(name)) f.update(conn) # Create databases for config in data['databases']: name = config['database-name'] db = Database.lookup(conn, name) if db is None: print("Need to create database: {0}".format(name))