diff options
Diffstat (limited to 'reddwarfclient/cli.py')
| -rw-r--r-- | reddwarfclient/cli.py | 385 |
1 files changed, 0 insertions, 385 deletions
diff --git a/reddwarfclient/cli.py b/reddwarfclient/cli.py deleted file mode 100644 index f83de6d..0000000 --- a/reddwarfclient/cli.py +++ /dev/null @@ -1,385 +0,0 @@ -#!/usr/bin/env python - -# Copyright 2011 OpenStack LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -""" -Reddwarf Command line tool -""" - -#TODO(tim.simpson): optparse is deprecated. Replace with argparse. -import optparse -import os -import sys - - -# If ../reddwarf/__init__.py exists, add ../ to Python search path, so that -# it will override what happens to be installed in /usr/(local/)lib/python... -possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]), - os.pardir, - os.pardir)) -if os.path.exists(os.path.join(possible_topdir, 'reddwarfclient', - '__init__.py')): - sys.path.insert(0, possible_topdir) - - -from reddwarfclient import common - - -class InstanceCommands(common.AuthedCommandsBase): - """Commands to perform various instances operations and actions""" - - params = [ - 'flavor', - 'id', - 'limit', - 'marker', - 'name', - 'size', - 'backup' - ] - - def create(self): - """Create a new instance""" - self._require('name', 'flavor') - volume = None - if self.size is not None: - volume = {"size": self.size} - restorePoint = None - if self.backup is not None: - restorePoint = {"backupRef": self.backup} - self._pretty_print(self.dbaas.instances.create, self.name, - self.flavor, volume, restorePoint=restorePoint) - - def delete(self): - """Delete the specified instance""" - self._require('id') - print self.dbaas.instances.delete(self.id) - - def get(self): - """Get details for the specified instance""" - self._require('id') - self._pretty_print(self.dbaas.instances.get, self.id) - - def backups(self): - """Get a list of backups for the specified instance""" - self._require('id') - self._pretty_list(self.dbaas.instances.backups, self.id) - - def list(self): - """List all instances for account""" - # limit and marker are not required. - limit = self.limit or None - if limit: - limit = int(limit, 10) - self._pretty_paged(self.dbaas.instances.list) - - def resize_volume(self): - """Resize an instance volume""" - self._require('id', 'size') - self._pretty_print(self.dbaas.instances.resize_volume, self.id, - self.size) - - def resize_instance(self): - """Resize an instance flavor""" - self._require('id', 'flavor') - self._pretty_print(self.dbaas.instances.resize_instance, self.id, - self.flavor) - - def restart(self): - """Restart the database""" - self._require('id') - self._pretty_print(self.dbaas.instances.restart, self.id) - - def reset_password(self): - """Reset the root user Password""" - self._require('id') - self._pretty_print(self.dbaas.instances.reset_password, self.id) - - -class FlavorsCommands(common.AuthedCommandsBase): - """Commands for listing Flavors""" - - params = [] - - def list(self): - """List the available flavors""" - self._pretty_list(self.dbaas.flavors.list) - - -class DatabaseCommands(common.AuthedCommandsBase): - """Database CRUD operations on an instance""" - - params = [ - 'name', - 'id', - 'limit', - 'marker', - ] - - def create(self): - """Create a database""" - self._require('id', 'name') - databases = [{'name': self.name}] - print self.dbaas.databases.create(self.id, databases) - - def delete(self): - """Delete a database""" - self._require('id', 'name') - print self.dbaas.databases.delete(self.id, self.name) - - def list(self): - """List the databases""" - self._require('id') - self._pretty_paged(self.dbaas.databases.list, self.id) - - -class UserCommands(common.AuthedCommandsBase): - """User CRUD operations on an instance""" - params = [ - 'id', - 'database', - 'databases', - 'hostname', - 'name', - 'password', - ] - - def create(self): - """Create a user in instance, with access to one or more databases""" - self._require('id', 'name', 'password', 'databases') - self._make_list('databases') - databases = [{'name': dbname} for dbname in self.databases] - users = [{'name': self.name, 'host': self.hostname, - 'password': self.password, 'databases': databases}] - self.dbaas.users.create(self.id, users) - - def delete(self): - """Delete the specified user""" - self._require('id', 'name') - self.dbaas.users.delete(self.id, self.name, self.hostname) - - def get(self): - """Get a single user.""" - self._require('id', 'name') - self._pretty_print(self.dbaas.users.get, self.id, - self.name, self.hostname) - - def list(self): - """List all the users for an instance""" - self._require('id') - self._pretty_paged(self.dbaas.users.list, self.id) - - def access(self): - """Show all databases the user has access to.""" - self._require('id', 'name') - self._pretty_list(self.dbaas.users.list_access, self.id, - self.name, self.hostname) - - def grant(self): - """Allow an existing user permissions to access one or more - databases.""" - self._require('id', 'name', 'databases') - self._make_list('databases') - self.dbaas.users.grant(self.id, self.name, self.databases, - self.hostname) - - def revoke(self): - """Revoke from an existing user access permissions to a database.""" - self._require('id', 'name', 'database') - self.dbaas.users.revoke(self.id, self.name, self.database, - self.hostname) - - def change_password(self): - """Change the password of a single user.""" - self._require('id', 'name', 'password') - users = [{'name': self.name, - 'host': self.hostname, - 'password': self.password}] - self.dbaas.users.change_passwords(self.id, users) - - -class RootCommands(common.AuthedCommandsBase): - """Root user related operations on an instance""" - - params = [ - 'id', - ] - - def create(self): - """Enable the instance's root user.""" - self._require('id') - try: - user, password = self.dbaas.root.create(self.id) - print "User:\t\t%s\nPassword:\t%s" % (user, password) - except: - print sys.exc_info()[1] - - def enabled(self): - """Check the instance for root access""" - self._require('id') - self._pretty_print(self.dbaas.root.is_root_enabled, self.id) - - -class VersionCommands(common.AuthedCommandsBase): - """List available versions""" - - params = [ - 'url', - ] - - def list(self): - """List all the supported versions""" - self._require('url') - self._pretty_list(self.dbaas.versions.index, self.url) - - -class LimitsCommands(common.AuthedCommandsBase): - """Show the rate limits and absolute limits""" - - def list(self): - """List the rate limits and absolute limits""" - self._pretty_list(self.dbaas.limits.list) - - -class BackupsCommands(common.AuthedCommandsBase): - """Command to manage and show backups""" - params = ['name', 'instance', 'description'] - - def get(self): - """Get details for the specified backup""" - self._require('id') - self._pretty_print(self.dbaas.backups.get, self.id) - - def list(self): - """List backups""" - self._pretty_list(self.dbaas.backups.list) - - def create(self): - """Create a new backup""" - self._require('name', 'instance') - self._pretty_print(self.dbaas.backups.create, self.name, - self.instance, self.description) - - def delete(self): - """Delete a backup""" - self._require('id') - self._pretty_print(self.dbaas.backups.delete, self.id) - - -class SecurityGroupCommands(common.AuthedCommandsBase): - """Commands to list and show Security Groups For an Instance and """ - """create and delete security group rules for them. """ - params = ['id', - 'secgroup_id', - 'protocol', - 'from_port', - 'to_port', - 'cidr' - ] - - def get(self): - """Get a security group associated with an instance.""" - self._require('id') - self._pretty_print(self.dbaas.security_groups.get, self.id) - - def list(self): - """List all the Security Groups and the rules""" - self._pretty_paged(self.dbaas.security_groups.list) - - def add_rule(self): - """Add a security group rule""" - self._require('secgroup_id', 'protocol', - 'from_port', 'to_port', 'cidr') - self.dbaas.security_group_rules.create(self.secgroup_id, self.protocol, - self.from_port, self.to_port, - self.cidr) - - def delete_rule(self): - """Delete a security group rule""" - self._require('id') - self.dbaas.security_group_rules.delete(self.id) - - -COMMANDS = {'auth': common.Auth, - 'instance': InstanceCommands, - 'flavor': FlavorsCommands, - 'database': DatabaseCommands, - 'limit': LimitsCommands, - 'backup': BackupsCommands, - 'user': UserCommands, - 'root': RootCommands, - 'version': VersionCommands, - 'secgroup': SecurityGroupCommands, - } - - -def main(): - # Parse arguments - load_file = True - for index, arg in enumerate(sys.argv): - if (arg == "auth" and len(sys.argv) > (index + 1) - and sys.argv[index + 1] == "login"): - load_file = False - - oparser = common.CliOptions.create_optparser(load_file) - for k, v in COMMANDS.items(): - v._prepare_parser(oparser) - (options, args) = oparser.parse_args() - - if not args: - common.print_commands(COMMANDS) - - if options.verbose: - os.environ['RDC_PP'] = "True" - os.environ['REDDWARFCLIENT_DEBUG'] = "True" - - # Pop the command and check if it's in the known commands - cmd = args.pop(0) - if cmd in COMMANDS: - fn = COMMANDS.get(cmd) - command_object = None - try: - command_object = fn(oparser) - except Exception as ex: - if options.debug: - raise - print(ex) - - # Get a list of supported actions for the command - actions = common.methods_of(command_object) - - if len(args) < 1: - common.print_actions(cmd, actions) - - # Check for a valid action and perform that action - action = args.pop(0) - if action in actions: - if not options.debug: - try: - getattr(command_object, action)() - except Exception as ex: - if options.debug: - raise - print ex - else: - getattr(command_object, action)() - else: - common.print_actions(cmd, actions) - else: - common.print_commands(COMMANDS) - - -if __name__ == '__main__': - main() |
