1# Copyright 2015 Rackspace Hosting Inc. 2# All Rights Reserved 3# 4# Licensed under the Apache License, Version 2.0 (the "License"); you may 5# not use this file except in compliance with the License. You may obtain 6# a copy of the License at 7# 8# http://www.apache.org/licenses/LICENSE-2.0 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13# License for the specific language governing permissions and limitations 14# under the License. 15# 16from stevedore import extension 17 18from neutronclient.neutron import v2_0 as neutronV20 19 20 21def _discover_via_entry_points(): 22 emgr = extension.ExtensionManager('neutronclient.extension', 23 invoke_on_load=False) 24 return ((ext.name, ext.plugin) for ext in emgr) 25 26 27class NeutronClientExtension(neutronV20.NeutronCommand): 28 pagination_support = False 29 _formatters = {} 30 sorting_support = False 31 32 33class ClientExtensionShow(NeutronClientExtension, neutronV20.ShowCommand): 34 def take_action(self, parsed_args): 35 # NOTE(mdietz): Calls 'execute' to provide a consistent pattern 36 # for any implementers adding extensions with 37 # regard to any other extension verb. 38 return self.execute(parsed_args) 39 40 def execute(self, parsed_args): 41 return super(ClientExtensionShow, self).take_action(parsed_args) 42 43 44class ClientExtensionList(NeutronClientExtension, neutronV20.ListCommand): 45 def take_action(self, parsed_args): 46 # NOTE(mdietz): Calls 'execute' to provide a consistent pattern 47 # for any implementers adding extensions with 48 # regard to any other extension verb. 49 return self.execute(parsed_args) 50 51 def execute(self, parsed_args): 52 return super(ClientExtensionList, self).take_action(parsed_args) 53 54 55class ClientExtensionDelete(NeutronClientExtension, neutronV20.DeleteCommand): 56 def take_action(self, parsed_args): 57 # NOTE(mdietz): Calls 'execute' to provide a consistent pattern 58 # for any implementers adding extensions with 59 # regard to any other extension verb. 60 return self.execute(parsed_args) 61 62 def execute(self, parsed_args): 63 return super(ClientExtensionDelete, self).take_action(parsed_args) 64 65 66class ClientExtensionCreate(NeutronClientExtension, neutronV20.CreateCommand): 67 def take_action(self, parsed_args): 68 # NOTE(mdietz): Calls 'execute' to provide a consistent pattern 69 # for any implementers adding extensions with 70 # regard to any other extension verb. 71 return self.execute(parsed_args) 72 73 def execute(self, parsed_args): 74 return super(ClientExtensionCreate, self).take_action(parsed_args) 75 76 77class ClientExtensionUpdate(NeutronClientExtension, neutronV20.UpdateCommand): 78 def take_action(self, parsed_args): 79 # NOTE(mdietz): Calls 'execute' to provide a consistent pattern 80 # for any implementers adding extensions with 81 # regard to any other extension verb. 82 return self.execute(parsed_args) 83 84 def execute(self, parsed_args): 85 return super(ClientExtensionUpdate, self).take_action(parsed_args) 86