# File lib/rhc/commands/cartridge.rb, line 77 def add(cart_type) cart = check_cartridges(cart_type, :from => not_standalone_cartridges).first say "Adding #{cart.short_name} to application '#{options.app}' ... " say format_usage_message(cart) if cart.usage_rate? rest_app = rest_client.find_application(options.namespace, options.app, :include => :cartridges) rest_cartridge = rest_app.add_cartridge(cart) success "done" paragraph{ display_cart(rest_cartridge) } paragraph{ rest_cartridge.messages.each { |msg| success msg } } 0 end
# File lib/rhc/commands/cartridge.rb, line 39 def list carts = rest_client.cartridges.sort_by{ |c| "#{c.type == 'standalone' && 1}_#{c.tags.include?('experimental') ? 1 : 0}_#{(c.display_name || c.name).downcase}" } pager if options.verbose carts.each do |c| paragraph do name = c.name name += '*' if c.usage_rate? name = c.display_name != c.name && "#{color(c.display_name, :cyan)} [#{name}]" || name tags = c.tags - RHC::Rest::Cartridge::HIDDEN_TAGS say header([name, "(#{c.only_in_existing? ? 'addon' : 'web'})"]) say c.description paragraph{ say "Tagged with: #{tags.sort.join(', ')}" } if tags.present? paragraph{ say format_usage_message(c) } if c.usage_rate? end end else say table(carts.collect do |c| [c.usage_rate? ? "#{c.name} (*)" : c.name, c.display_name, c.only_in_existing? ? 'addon' : 'web'] end) end paragraph{ say "Note: Web cartridges can only be added to new applications." } paragraph{ say "(*) denotes a cartridge with additional usage costs." } if carts.any? { |c| c.usage_rate? } 0 end
# File lib/rhc/commands/cartridge.rb, line 183 def reload(cartridge) cartridge_action(cartridge, :reload, 'Reloading %s ... ') 0 end
# File lib/rhc/commands/cartridge.rb, line 116 def remove(cartridge) rest_app = rest_client.find_application(options.namespace, options.app, :include => :cartridges) rest_cartridge = check_cartridges(cartridge, :from => rest_app.cartridges).first confirm_action "Removing a cartridge is a destructive operation that may result in loss of data associated with the cartridge.\n\nAre you sure you wish to remove #{rest_cartridge.name} from '#{rest_app.name}'?" say "Removing #{rest_cartridge.name} from '#{rest_app.name}' ... " rest_cartridge.destroy success "removed" paragraph{ rest_cartridge.messages.each { |msg| success msg } } 0 end
# File lib/rhc/commands/cartridge.rb, line 159 def restart(cartridge) cartridge_action(cartridge, :restart, 'Restarting %s ... ') 0 end
# File lib/rhc/commands/cartridge.rb, line 209 def scale(cartridge, multiplier) options.default(:min => Integer(multiplier), :max => Integer(multiplier)) if multiplier rescue raise ArgumentError, "Multiplier must be a positive integer." raise RHC::MissingScalingValueException unless options.min || options.max rest_app = rest_client.find_application(options.namespace, options.app, :include => :cartridges) rest_cartridge = check_cartridges(cartridge, :from => rest_app.cartridges).first raise RHC::CartridgeNotScalableException unless rest_cartridge.scalable? warn "This operation will run until the application is at the minimum scale and may take several minutes." say "Setting scale range for #{rest_cartridge.name} ... " cart = rest_cartridge.set_scales({ :scales_from => options.min, :scales_to => options.max }) success "done" paragraph{ display_cart(cart) } 0 rescue RHC::Rest::TimeoutException => e raise unless e.on_receive? info "The server has closed the connection, but your scaling operation is still in progress. Please check the status of your operation via 'rhc show-app'." 1 end
# File lib/rhc/commands/cartridge.rb, line 100 def show(cartridge) rest_app = rest_client.find_application(options.namespace, options.app, :include => :cartridges) rest_cartridge = check_cartridges(cartridge, :from => rest_app.cartridges).first display_cart(rest_cartridge) 0 end
# File lib/rhc/commands/cartridge.rb, line 137 def start(cartridge) cartridge_action(cartridge, :start, 'Starting %s ... ') 0 end
# File lib/rhc/commands/cartridge.rb, line 170 def status(cartridge) rest_app = rest_client.find_application(options.namespace, options.app, :include => :cartridges) rest_cartridge = check_cartridges(cartridge, :from => rest_app.cartridges).first results { rest_cartridge.status.each{ |msg| say msg['message'] } } 0 end
# File lib/rhc/commands/cartridge.rb, line 148 def stop(cartridge) cartridge_action(cartridge, :stop, 'Stopping %s ... ') 0 end
# File lib/rhc/commands/cartridge.rb, line 247 def storage(cartridge) cartridges = Array(cartridge) rest_app = rest_client(:min_api => 1.3).find_application(options.namespace, options.app, :include => :cartridges) # Pull the desired action # actions = options.__hash__.keys & [:show, :add, :remove, :set] # Ensure that only zero or one action was selected raise RHC::AdditionalStorageArgumentsException if actions.length > 1 operation = actions.first || :show amount = options.__hash__[operation] # Perform a storage change action if requested if operation == :show results do if cartridges.length == 0 display_cart_storage_list rest_app.cartridges else check_cartridges(cartridge, :from => rest_app.cartridges).each do |cart| display_cart_storage_info cart, cart.display_name end end end else raise RHC::MultipleCartridgesException, 'Exactly one cartridge must be specified for this operation' if cartridges.length != 1 rest_cartridge = check_cartridges(cartridge, :from => rest_app.cartridges).first amount = amount.match(%r^(\d+)(GB)?$/) raise RHC::AdditionalStorageValueException if amount.nil? # If the amount is specified, find the regex match and convert to a number amount = amount[1].to_i total_amount = rest_cartridge.additional_gear_storage if operation == :add total_amount += amount elsif operation == :remove if amount > total_amount && !options.force raise RHC::AdditionalStorageRemoveException else total_amount = [total_amount - amount, 0].max end else total_amount = amount end say "Set storage on cartridge ... " cart = rest_cartridge.set_storage(:additional_gear_storage => total_amount) success "set to #{total_amount}GB" paragraph{ display_cart_storage_info cart } end 0 end