Class: MMS::CLI::Command

Inherits:
Clamp::Command
  • Object
show all
Defined in:
lib/mms/cli.rb

Defined Under Namespace

Classes: Alerts, Clusters, Groups, Hosts, RestoreJobs, Snapshots

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(_invocation_path, _context = {}, _parent_attribute_values = {}) ⇒ Command

Returns a new instance of Command.



51
52
53
# File 'lib/mms/cli.rb', line 51

def initialize(_invocation_path, _context = {}, _parent_attribute_values = {})
  @config ||= MMS::Config.new
end

Instance Attribute Details

#agentMMS::Agent

Returns:



71
72
73
# File 'lib/mms/cli.rb', line 71

def agent
  @agent
end

#app_nameObject

Returns the value of attribute app_name.



7
8
9
# File 'lib/mms/cli.rb', line 7

def app_name
  @app_name
end

#clientObject

Returns the value of attribute client.



10
11
12
# File 'lib/mms/cli.rb', line 10

def client
  @client
end

#configObject

Returns the value of attribute config.



8
9
10
# File 'lib/mms/cli.rb', line 8

def config
  @config
end

Instance Method Details

#clustersArray<MMS::Resource::Cluster>

Returns:



83
84
85
86
87
88
89
# File 'lib/mms/cli.rb', line 83

def clusters
  id = ignore? ? nil : @config.default_cluster_id

  groups.collect! do |group|
    id.nil? ? group.clusters : group.cluster(id)
  end.flatten
end

#groupsArray<MMS::Resource::Group>

Returns:



77
78
79
80
# File 'lib/mms/cli.rb', line 77

def groups
  id = ignore? ? nil : @config.default_group_id
  id.nil? ? agent.groups : [agent.find_group(id)]
end

#parse_user_home_configObject

Raises:



55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/mms/cli.rb', line 55

def parse_user_home_config
  raise(MMS::ConfigError.new('Config file path is not set!')) if @config.config_path.nil?
  config_file = Pathname.new(@config.config_path)
  raise(MMS::ConfigError.new("Config file `#{config_file}` does not exist")) unless config_file.exist?

  config = ParseConfig.new(config_file)
  config.params.map do |key, value|
    begin
      @config.send("#{key}=", value)
    rescue Exception => _e
      raise MMS::ConfigError.new("Config option `#{key}` from file `#{config_file}` is not allowed!")
    end
  end
end

Parameters:



93
94
95
# File 'lib/mms/cli.rb', line 93

def print(heading, resource_list)
  json? ? print_json(resource_list) : print_human(heading, resource_list)
end

Parameters:



99
100
101
102
103
104
105
106
107
108
109
# File 'lib/mms/cli.rb', line 99

def print_human(heading, resource_list)
  rows = []

  resource_list.first(@config.limit).each do |resource|
    rows += resource.table_section
  end

  puts Terminal::Table.new headings: (heading.nil? ? [] : heading), rows: rows

  print_tips unless ignore?
end

Parameters:



112
113
114
115
116
117
118
119
120
# File 'lib/mms/cli.rb', line 112

def print_json(resource_list)
  rows = []

  resource_list.first(@config.limit).each do |resource|
    rows.push(resource.to_hash)
  end

  puts JSON.pretty_generate(rows)
end


122
123
124
125
126
127
128
129
# File 'lib/mms/cli.rb', line 122

def print_tips
  puts 'Default group: ' + @config.default_group_id unless @config.default_group_id.nil?
  puts 'Default cluster: ' + @config.default_cluster_id unless @config.default_cluster_id.nil?

  if !@config.default_group_id.nil? || !@config.default_cluster_id.nil?
    puts "Add flag --ignore or update --default-group-id, --default-cluster-id or update your `#{@config.config_path}` to see all resources"
  end
end

#run(arguments) ⇒ Object

Parameters:

  • arguments (Array)


132
133
134
135
136
137
138
139
140
141
142
143
# File 'lib/mms/cli.rb', line 132

def run(arguments)
  parse_user_home_config
  super
rescue Clamp::HelpWanted => _e
  raise(help)
rescue Clamp::UsageError => e
  raise([e.message, help].join("\n"))
rescue MMS::AuthError => _e
  raise('Authorisation problem. Please check you credential!')
rescue MMS::ResourceError => e
  raise(["Resource #{e.resource.class.name} problem:", e.message].join("\n"))
end