diff --git a/source/lib/vagrant-openstack-provider/command/abstract_command.rb b/source/lib/vagrant-openstack-provider/command/abstract_command.rb index 5669bb4..3b4accb 100644 --- a/source/lib/vagrant-openstack-provider/command/abstract_command.rb +++ b/source/lib/vagrant-openstack-provider/command/abstract_command.rb @@ -16,7 +16,7 @@ def execute(name) env[:ui] = @env.ui end - VagrantPlugins::Openstack::Action::ConnectOpenstack.new(nil, env).call(env) + before_cmd(name, @argv, env) cmd(name, @argv, env) @env.ui.info('') @@ -38,6 +38,9 @@ def normalize_args(args) args end + def before_cmd(_name, _argv, _env) + end + def cmd(_name, _argv, _env) fail 'Command not implemented. \'cmd\' method must be overridden in all subclasses' end diff --git a/source/lib/vagrant-openstack-provider/command/flavor_list.rb b/source/lib/vagrant-openstack-provider/command/flavor_list.rb index 2b8ed1a..a128733 100644 --- a/source/lib/vagrant-openstack-provider/command/flavor_list.rb +++ b/source/lib/vagrant-openstack-provider/command/flavor_list.rb @@ -1,15 +1,13 @@ -require 'vagrant-openstack-provider/command/utils' -require 'vagrant-openstack-provider/command/abstract_command' +require 'vagrant-openstack-provider/command/openstack_command' module VagrantPlugins module Openstack module Command - class FlavorList < AbstractCommand - include VagrantPlugins::Openstack::Command::Utils - + class FlavorList < OpenstackCommand def self.synopsis I18n.t('vagrant_openstack.command.flavor_list_synopsis') end + def cmd(name, argv, env) fail Errors::NoArgRequiredForCommand, cmd: name unless argv.size == 0 flavors = env[:openstack_client].nova.get_all_flavors(env) diff --git a/source/lib/vagrant-openstack-provider/command/floatingip_list.rb b/source/lib/vagrant-openstack-provider/command/floatingip_list.rb index e373736..8a2a530 100644 --- a/source/lib/vagrant-openstack-provider/command/floatingip_list.rb +++ b/source/lib/vagrant-openstack-provider/command/floatingip_list.rb @@ -1,15 +1,13 @@ -require 'vagrant-openstack-provider/command/utils' -require 'vagrant-openstack-provider/command/abstract_command' +require 'vagrant-openstack-provider/command/openstack_command' module VagrantPlugins module Openstack module Command - class FloatingIpList < AbstractCommand - include VagrantPlugins::Openstack::Command::Utils - + class FloatingIpList < OpenstackCommand def self.synopsis I18n.t('vagrant_openstack.command.flaotingip_list_synopsis') end + def cmd(name, argv, env) fail Errors::NoArgRequiredForCommand, cmd: name unless argv.size == 0 diff --git a/source/lib/vagrant-openstack-provider/command/image_list.rb b/source/lib/vagrant-openstack-provider/command/image_list.rb index afb8d8d..0c76464 100644 --- a/source/lib/vagrant-openstack-provider/command/image_list.rb +++ b/source/lib/vagrant-openstack-provider/command/image_list.rb @@ -1,15 +1,13 @@ -require 'vagrant-openstack-provider/command/utils' -require 'vagrant-openstack-provider/command/abstract_command' +require 'vagrant-openstack-provider/command/openstack_command' module VagrantPlugins module Openstack module Command - class ImageList < AbstractCommand - include VagrantPlugins::Openstack::Command::Utils - + class ImageList < OpenstackCommand def self.synopsis I18n.t('vagrant_openstack.command.image_list_synopsis') end + def cmd(name, argv, env) fail Errors::NoArgRequiredForCommand, cmd: name unless argv.size == 0 rows = [] diff --git a/source/lib/vagrant-openstack-provider/command/network_list.rb b/source/lib/vagrant-openstack-provider/command/network_list.rb index c5d32af..175e3e2 100644 --- a/source/lib/vagrant-openstack-provider/command/network_list.rb +++ b/source/lib/vagrant-openstack-provider/command/network_list.rb @@ -1,15 +1,13 @@ -require 'vagrant-openstack-provider/command/utils' -require 'vagrant-openstack-provider/command/abstract_command' +require 'vagrant-openstack-provider/command/openstack_command' module VagrantPlugins module Openstack module Command - class NetworkList < AbstractCommand - include VagrantPlugins::Openstack::Command::Utils - + class NetworkList < OpenstackCommand def self.synopsis I18n.t('vagrant_openstack.command.network_list_synopsis') end + def cmd(name, argv, env) fail Errors::UnrecognizedArgForCommand, cmd: name, arg: argv[1] if argv.size > 1 if argv.size == 0 diff --git a/source/lib/vagrant-openstack-provider/command/openstack_command.rb b/source/lib/vagrant-openstack-provider/command/openstack_command.rb new file mode 100644 index 0000000..ca1edf9 --- /dev/null +++ b/source/lib/vagrant-openstack-provider/command/openstack_command.rb @@ -0,0 +1,20 @@ +require 'vagrant-openstack-provider/command/utils' +require 'vagrant-openstack-provider/command/abstract_command' + +module VagrantPlugins + module Openstack + module Command + class OpenstackCommand < AbstractCommand + include VagrantPlugins::Openstack::Command::Utils + + def initialize(argv, env) + super(argv, env) + end + + def before_cmd(_name, _argv, env) + VagrantPlugins::Openstack::Action::ConnectOpenstack.new(nil, env).call(env) + end + end + end + end +end diff --git a/source/lib/vagrant-openstack-provider/command/reset.rb b/source/lib/vagrant-openstack-provider/command/reset.rb index c5cf331..b640f30 100644 --- a/source/lib/vagrant-openstack-provider/command/reset.rb +++ b/source/lib/vagrant-openstack-provider/command/reset.rb @@ -5,11 +5,10 @@ module VagrantPlugins module Openstack module Command class Reset < AbstractCommand - include VagrantPlugins::Openstack::Command::Utils - def self.synopsis I18n.t('vagrant_openstack.command.reset') end + def cmd(name, argv, env) fail Errors::NoArgRequiredForCommand, cmd: name unless argv.size == 0 FileUtils.remove_dir("#{env[:machine].data_dir}") diff --git a/source/lib/vagrant-openstack-provider/command/subnet_list.rb b/source/lib/vagrant-openstack-provider/command/subnet_list.rb index 7caa053..79dfb90 100644 --- a/source/lib/vagrant-openstack-provider/command/subnet_list.rb +++ b/source/lib/vagrant-openstack-provider/command/subnet_list.rb @@ -1,12 +1,9 @@ -require 'vagrant-openstack-provider/command/utils' -require 'vagrant-openstack-provider/command/abstract_command' +require 'vagrant-openstack-provider/command/openstack_command' module VagrantPlugins module Openstack module Command - class SubnetList < AbstractCommand - include VagrantPlugins::Openstack::Command::Utils - + class SubnetList < OpenstackCommand def self.synopsis I18n.t('vagrant_openstack.command.subnet_list_synopsis') end diff --git a/source/lib/vagrant-openstack-provider/command/volume_list.rb b/source/lib/vagrant-openstack-provider/command/volume_list.rb index 94edf53..29ad2a1 100644 --- a/source/lib/vagrant-openstack-provider/command/volume_list.rb +++ b/source/lib/vagrant-openstack-provider/command/volume_list.rb @@ -1,15 +1,13 @@ -require 'vagrant-openstack-provider/command/utils' -require 'vagrant-openstack-provider/command/abstract_command' +require 'vagrant-openstack-provider/command/openstack_command' module VagrantPlugins module Openstack module Command - class VolumeList < AbstractCommand - include VagrantPlugins::Openstack::Command::Utils - + class VolumeList < OpenstackCommand def self.synopsis I18n.t('vagrant_openstack.command.volume_list_synopsis') end + def cmd(name, argv, env) fail Errors::NoArgRequiredForCommand, cmd: name unless argv.size == 0 volumes = env[:openstack_client].cinder.get_all_volumes(env)