class Morpheus::Cli::SecurityGroupRules

Public Instance Methods

add_custom_rule(args) click to toggle source
# File lib/morpheus/cli/commands/security_group_rules.rb, line 23
  def add_custom_rule(args)
    usage = <<-EOT
Usage: morpheus #{command_name} add-custom-rule SOURCE_CIDR PORT_RANGE PROTOCOL [options]
\tSOURCE_CIDR: CIDR to white-list
\tPORT_RANGE: Port value (i.e. 123) or port range (i.e. 1-65535)
\tPROTOCOL: tcp, udp, icmp
EOT
    options = {}
    security_group_id = nil
    optparse = Morpheus::Cli::OptionParser.new do |opts|
      opts.banner = usage
      opts.on( '-s', '--secgroup SECGROUP', "Security Group ID (Use will use security as set with 'security-groups use id'" ) do |id|
        security_group_id = id
      end
      build_common_options(opts, options, [:json, :dry_run, :remote])
    end
    optparse.parse!(args)

    if args.count < 3
      puts optparse.banner
      exit 1
    end

    if security_group_id.nil? && @active_security_group
      security_group_id = @active_security_group[@appliance_name.to_sym]
    end

    if security_group_id.nil?
      puts "Security Group ID must be specified with options or set using 'security-groups use id'"
      exit 1
    end

    params = {
      :rule => {
        :source => args[0],
        :portRange => args[1],
        :protocol => args[2],
        :customRule => true
      }
    }
    connect(options)
    begin
      @security_group_rules_interface.setopts(options)
      if options[:dry_run]
        print_dry_run @security_group_rules_interface.dry.create(security_group_id, params)
        return
      end
      json_response = @security_group_rules_interface.create(security_group_id, params)
      if options[:json]
        print JSON.pretty_generate(json_response)
        print "\n"
        return
      end
      list([security_group_id])
    rescue RestClient::Exception => e
      print_rest_exception(e, options)
      exit 1
    end
  end
add_instance_rule(args) click to toggle source
# File lib/morpheus/cli/commands/security_group_rules.rb, line 83
  def add_instance_rule(args)
    usage = <<-EOT
Usage: morpheus #{command_name} add_instance_rule SOURCE_CIDR INSTANCE_TYPE_ID [options]
\tSOURCE_CIDR: CIDR to white-list
\tINSTANCE_TYPE_ID: ID of the Instance Type to access
EOT

    options = {}
    security_group_id = nil
    optparse = Morpheus::Cli::OptionParser.new do |opts|
      opts.banner = usage
      opts.on( '-s', '--secgroup secgroup', "Security Group ID (Use will use security as set with 'security-groups use id'" ) do |id|
        security_group_id = id
      end
      build_common_options(opts, options, [:json, :dry_run, :remote])
    end
    optparse.parse!(args)
    if args.count < 2
      puts optparse.banner
      exit 1
    end
    if security_group_id.nil? && @active_security_group
      security_group_id = @active_security_group[@appliance_name.to_sym]
    end

    if security_group_id.nil?
      puts "Security Group ID must be specified with options or set using 'security-groups use id'"
      exit
    end

    params = {
      :rule => {
        :source => args[0],
        :instanceTypeId => args[1]
      }
    }
    connect(options)
    begin
      @security_group_rules_interface.setopts(options)
      if options[:dry_run]
        print_dry_run @security_group_rules_interface.dry.create(security_group_id, params)
        return
      end
      json_response = @security_group_rules_interface.create(security_group_id, params)
      if options[:json]
        print JSON.pretty_generate(json_response)
        print "\n"
        return
      end
      list([security_group_id])
    rescue RestClient::Exception => e
      print_rest_exception(e, options)
      exit 1
    end
  end
connect(opts) click to toggle source
# File lib/morpheus/cli/commands/security_group_rules.rb, line 12
def connect(opts)
  @api_client = establish_remote_appliance_connection(opts)
  @security_group_rules_interface = @api_client.security_group_rules
  @active_security_group = ::Morpheus::Cli::SecurityGroups.load_security_group_file
end
handle(args) click to toggle source
# File lib/morpheus/cli/commands/security_group_rules.rb, line 18
def handle(args)
  print_error "#{yellow}DEPRECATION WARNING: `security-group-rules` is deprecated. Please use `security-groups` instead.#{reset}\n"
  handle_subcommand(args)
end
list(args) click to toggle source
# File lib/morpheus/cli/commands/security_group_rules.rb, line 139
def list(args)
  options = {}
  security_group_id = nil
  optparse = Morpheus::Cli::OptionParser.new do |opts|
    opts.banner = subcommand_usage("[id]")
    build_common_options(opts, options, [:json, :dry_run, :remote])
  end
  optparse.parse!(args)
  security_group_id = args[0]
  if security_group_id.nil? && @active_security_group
    security_group_id = @active_security_group[@appliance_name.to_sym]
  end

  if security_group_id.nil?
    puts "Security Group ID must be specified with options or set using 'security-groups use id'"
    exit 1
  end
  connect(options)
  begin
    params = {}
    @security_group_rules_interface.setopts(options)
    if options[:dry_run]
      print_dry_run @security_group_rules_interface.dry.get(security_group_id, params)
      return
    end
    json_response = @security_group_rules_interface.get(security_group_id, params)
    if options[:json]
      print JSON.pretty_generate(json_response)
      print "\n"
      return
    end
    rules = json_response['rules']
    print_h1 "Morpheus Security Group Rules for Security Group ID: #{security_group_id}"
    if rules.empty?
      print yellow,"No security group rules currently configured.",reset,"\n"
    else
      rules = rules.sort {|x,y| x["id"] <=> y["id"] }
      rules.each do |rule|
        print cyan, "=  #{rule['id']} - (CIDR:#{rule['source']}, Port Range:#{rule['portRange']}, Protocol:#{rule['protocol']}, Custom Rule:#{rule['customRule']}, Instance Type:#{rule['instanceTypeId']})\n"
      end
    end
    print reset,"\n"
  rescue RestClient::Exception => e
    print_rest_exception(e, options)
    exit 1
  end
end
remove(args) click to toggle source
# File lib/morpheus/cli/commands/security_group_rules.rb, line 187
def remove(args)
  options = {}
  security_group_id = nil
  optparse = Morpheus::Cli::OptionParser.new do |opts|
    opts.banner = subcommand_usage("[id] [options]")
    opts.on( '-s', '--secgroup secgroup', "Security Group ID (Use will use security as set with 'security-groups use id'" ) do |id|
      security_group_id = id
    end
    build_common_options(opts, options, [:json, :dry_run, :remote])
  end
  optparse.parse!(args)
  if args.count < 1
    puts optparse
    exit 1
  end
  if security_group_id.nil? && @active_security_group
    security_group_id = @active_security_group[@appliance_name.to_sym]
  end

  if security_group_id.nil?
    puts "Security Group ID must be specified with options or set using 'security-groups use id'"
    exit
  end
  connect(options)
  begin
    @security_group_rules_interface.setopts(options)
    if options[:dry_run]
      print_dry_run @security_group_rules_interface.dry.delete(security_group_id, args[0])
      return
    end
    json_response = @security_group_rules_interface.delete(security_group_id, args[0])
    if options[:json]
      print JSON.pretty_generate(json_response)
      print "\n"
      return
    end
    list([security_group_id])
  rescue RestClient::Exception => e
    print_rest_exception(e, options)
    exit 1
  end
end