Advertisement
Guest User

Untitled

a guest
May 8th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.84 KB | None | 0 0
  1. #!/usr/bin/env python
  2. from __future__ import print_function
  3. import sys
  4.  
  5. from cliff import app
  6. from cliff import command
  7. from cliff import commandmanager
  8.  
  9. from keystoneauth1.identity import v3
  10. from keystoneauth1 import session
  11. from keystoneclient.v3 import client as ks_client
  12. from neutronclient.v2_0 import client as neutron_client
  13. from keystoneauth1 import loading as ks_loading
  14. from oslo_config import cfg
  15. import logging
  16.  
  17. CONF = cfg.CONF
  18. CONF.import_group('keystone_authtoken', 'keystonemiddleware.auth_token')
  19. KS_SESSION = None
  20.  
  21.  
  22. def _get_keystone_session():
  23. global KS_SESSION
  24.  
  25. if not KS_SESSION:
  26. auth = v3.Password(
  27. auth_url=CONF.keystone_authtoken.auth_uri,
  28. username=CONF.keystone_authtoken.username,
  29. password=CONF.keystone_authtoken.password,
  30. project_name=CONF.keystone_authtoken.project_name,
  31. user_domain_name=CONF.keystone_authtoken.user_domain_name,
  32. project_domain_name=CONF.keystone_authtoken.project_domain_name,
  33. )
  34. KS_SESSION = session.Session(auth=auth, verify=False)
  35.  
  36. return KS_SESSION
  37.  
  38.  
  39. def get_keystone_client():
  40. sess = _get_keystone_session()
  41. return ks_client.Client(session=sess)
  42.  
  43.  
  44. def get_neutron_client():
  45. sess = _get_keystone_session()
  46. return neutron_client.Client(session=sess)
  47.  
  48.  
  49. class NeutronApiOps(app.App):
  50.  
  51. def __init__(self):
  52. super(NeutronApiOps, self).__init__(
  53. description='neutron ops helper',
  54. version='0.1',
  55. command_manager=commandmanager.CommandManager('neutron-api.ops'),
  56. deferred_help=True,
  57. )
  58. self.commands = {"get-ip-info": GetIPInfo}
  59. for k, v in self.commands.items():
  60. self.command_manager.add_command(k, v)
  61. CONF(project='neutron')
  62. ks_loading.load_auth_from_conf_options(cfg.CONF, 'keystone_authtoken')
  63. # auth = ks_loading.load_auth_from_conf_options(cfg.CONF, 'keystone_authtoken')
  64. # session = ks_loading.load_session_from_conf_options(cfg.CONF, 'keystone_authtoken', auth=auth)
  65. nc = get_neutron_client()
  66. print(nc)
  67. # nc.list_networks()
  68.  
  69. def initialize_app(self, argv):
  70. self.LOG.debug('initialize_app')
  71.  
  72. def prepare_to_run_command(self, cmd):
  73. self.LOG.debug('prepare_to_run_command %s', cmd.__class__.__name__)
  74.  
  75. def clean_up(self, cmd, result, err):
  76. self.LOG.debug('clean_up %s', cmd.__class__.__name__)
  77. if err:
  78. self.LOG.debug('got an error: %s', err)
  79.  
  80.  
  81. class GetIPInfo(command.Command):
  82. log = logging.getLogger(__name__)
  83.  
  84. def take_action(self, parsed_args):
  85. self.log.info('get-ip-info parsed_args: {}'.format(parsed_args))
  86. self.app.stdout.write('FOO\n')
  87.  
  88.  
  89. def main(argv=sys.argv[1:]):
  90. actionsapp = NeutronApiOps()
  91. return actionsapp.run(argv)
  92.  
  93.  
  94. if __name__ == '__main__':
  95. sys.exit(main(sys.argv[1:]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement