Class: VScripts::Commands::Tags2facts
- Inherits:
- 
      Object
      
        - Object
- VScripts::Commands::Tags2facts
 
- Defined in:
- lib/vscripts/commands/tags2facts.rb
Overview
Tags2Facts Class
Constant Summary collapse
- USAGE =
          Shows help 
- <<-EOS This command can only be run on an AWS EC2 instance. It looks for all tags associated with it and dumps them in a JSON file. By default this file is `/etc/facter/facts.d/ec2_tags.json`. It can be overridden with the ***`--file`*** argument. The `Name` and `Domain` tags are excluded by default because this command is intended to add Facter facts and these 2 already exist in Facter. This behaviour can be overridden by adding `[-a|--all]` command line option. USAGE: vscripts tags2facts [options] OPTIONS: EOS 
Instance Attribute Summary collapse
- 
  
    
      #arguments  ⇒ Array 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    The command specific arguments. 
Instance Method Summary collapse
- 
  
    
      #cli  ⇒ Hash 
    
    
  
  
  
  
  
  
  
  
  
    The command line arguments. 
- 
  
    
      #exclude_list  ⇒ Array 
    
    
  
  
  
  
  
  
  
  
  
    The tags to exclude. 
- 
  
    
      #execute  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Writes the formatted JSON to the file. 
- 
  
    
      #initialize(argv = [])  ⇒ Tags2facts 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    Loads the Tags2Facts class. 
- 
  
    
      #parser  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Specifies command line options. 
- 
  
    
      #tags_json  ⇒ JSON 
    
    
  
  
  
  
  
  
  
  
  
    The formatted JSON string. 
Methods included from Util::LocalSystem
#ensure_file_content, #ensure_file_dir, #external_dns, #hostname_path, #hosts_path, #local_domain_name, #local_fqdn, #local_host_name, #write_file
Methods included from AWS::Metadata
#check_instance, #ec2_instance?, #instance_id, #metadata_url, #public_hostname, #region, #zone
Methods included from AWS::EC2
#all_tags, #all_tags_hash, #create_tag, #ec2, #functional_instances, #instance, #name, #named_instances, #similar_instances, #tag, #tags_without
Constructor Details
#initialize(argv = []) ⇒ Tags2facts
Loads the Tags2Facts class
| 35 36 37 | # File 'lib/vscripts/commands/tags2facts.rb', line 35 def initialize(argv = []) @arguments ||= argv end | 
Instance Attribute Details
#arguments ⇒ Array (readonly)
Returns the command specific arguments.
| 31 32 33 | # File 'lib/vscripts/commands/tags2facts.rb', line 31 def arguments @arguments end | 
Instance Method Details
#cli ⇒ Hash
Returns the command line arguments.
| 51 52 53 54 55 | # File 'lib/vscripts/commands/tags2facts.rb', line 51 def cli @cli ||= Trollop.with_standard_exception_handling parser do parser.parse arguments end end | 
#exclude_list ⇒ Array
Returns the tags to exclude.
| 58 59 60 | # File 'lib/vscripts/commands/tags2facts.rb', line 58 def exclude_list cli.all ? [] : %w(Name Domain) end | 
#execute ⇒ Object
Writes the formatted JSON to the file
| 73 74 75 76 77 78 | # File 'lib/vscripts/commands/tags2facts.rb', line 73 def execute file = cli.file puts "Writing tags to \"#{file}\"" ensure_file_content(file, ) puts 'Done.' end | 
#parser ⇒ Object
Specifies command line options
| 40 41 42 43 44 45 46 47 48 | # File 'lib/vscripts/commands/tags2facts.rb', line 40 def parser Trollop::Parser.new do USAGE opt :file, 'The file that will store the tags', type: :string, default: '/etc/facter/facts.d/ec2_tags.json' opt :all, 'Collect all tags' stop_on_unknown end end | 
#tags_json ⇒ JSON
Returns the formatted JSON string.
| 63 64 65 66 67 68 69 70 | # File 'lib/vscripts/commands/tags2facts.rb', line 63 def filtered = (exclude_list) if filtered.empty? abort 'No tags were found!' else JSON.pretty_generate(filtered) end end |