# # Author:: Christine Draper () # Copyright:: Copyright (c) 2014 ThirdWave Insights LLC # License:: Apache License, Version 2.0 # # 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. # require 'chef/knife' require 'chef/knife/topo/loader' require 'chef/knife/cookbook_upload' unless defined? Chef::Knife::CookbookUpload module KnifeTopo # knife topo cookbook upload class TopoCookbookUpload < Chef::Knife deps do require 'chef/knife/topo/processor' end banner 'knife topo cookbook upload TOPOLOGY (options)' option( :data_bag, short: '-D DATA_BAG', long: '--data-bag DATA_BAG', description: 'The data bag the topologies are stored in' ) # Make called command options available self.options = Chef::Knife::CookbookUpload.options.merge( TopoCookbookUpload.options) include KnifeTopo::Loader def initialize(args) super @args = args # All called commands need to accept union of options Chef::Knife::CookbookUpload.options = options end def run validate_args # Load the topology data @topo = load_local_topo_or_exit(@topo_name) # Run cookbook upload command on the topology cookbook @processor = KnifeTopo::Processor.for_topo(@topo) @processor.upload_artifacts('cmd' => self, 'cmd_args' => @args) end def validate_args unless @name_args[0] show_usage ui.fatal('You must specify the name of a topology') exit 1 end @topo_name = @name_args[0] end end end