module OmfEc::Backward::AppDefinition

Public Instance Methods

defMeasurement(name,&block) click to toggle source

XXX: This should be provided by the omf-oml glue.

# File lib/omf_ec/backward/app_definition.rb, line 75
def defMeasurement(name,&block)
  mp = {:mp => name, :fields => []}
  @fields = []
  # call the block with ourserlves to process its 'defMetric' statements
  block.call(self) if block
  @fields.each { |f| mp[:fields] << f }
  define_measurement_point(mp)
end
defMetric(name,type, opts = {}) click to toggle source

Define metrics to measure

@param [String] name of the metric @param [Symbol] type of the metric data. For all supporting metric data types, refers to oml.mytestbed.net/doc/oml/latest/oml2-scaffold.1.html#_mp_defmetric_name_type @param [Hash] opts additional options

@option opts [String] :unit unit of measure of the metric @option opts [String] :description of the metric @option opts [Float] :precision precision of the metric value @option opts [Range] :range value range of the metric

@example OEDL

app.defMeasurement("power") do |mp|
  mp.defMetric('power', :double, :unit => "W", :precision => 0.1, :description => 'Power')
end
# File lib/omf_ec/backward/app_definition.rb, line 68
def defMetric(name,type, opts = {})
  # the third parameter used to be a description string
  opts = {:description => opts} if opts.class!=Hash
  @fields << {:field => name, :type => type}.merge(opts)
end
defProperty(name = :mandatory, description = nil, parameter = nil, options = {}) click to toggle source

Add a new parameter to this Application Definition. This method is for backward compatibility with previous OEDL 5.

@param [String] name name of the property to define (mandatory) @param [String] description description of this property; oml2-scaffold uses this for the help message (popt: descrip) @param [String] parameter command-line parameter to introduce this property, including dashes if needed (can be nil) @param [Hash] options list of options associated with this property @option options [String] :type type of the property: :integer, :string and :boolean are supported; oml2-scaffold extends this with :int and :double (popt: argInfo) @option options [Boolean] :dynamic true if the property can be changed at run-time @option options [Fixnum] :order used to order properties when creating the command line

The OML code-generation tool, oml2-scaffold extends the range of options supported in the options hash to support generation of popt(3) command line parsing code. As for the parameters, depending on the number of dashes (two/one) in parameter, it is used as the longName/shortName for popt(3), otherwise the former defaults to name, and the latter defaults to either :mnemonic or nothing.

@option options [String] :mnemonic one-letter mnemonic for the option (also returned by poptGetNextOpt as val) @option options [String] :unit unit in which this property is expressed; oml2-scaffold uses this for the help message (popt: argDescrip) @option options [String] :default default value if argument unspecified (optional; defaults to something sane for the :type) @option options [String] :var_name name of the C variable for popt(3) to store the property value into (optional; popt: arg; defaults to name, after sanitisation)

@see oml.mytestbed.net/doc/oml/latest/oml2-scaffold.1.html @see linux.die.net/man/3/popt

# File lib/omf_ec/backward/app_definition.rb, line 37
def defProperty(name = :mandatory, description = nil, parameter = nil, options = {})
  opts = {:description => description, :cmd => parameter}
  # Map old OMF5 types to OMF6
  # Map OMF app property types to Ruby types
  options[:type] = case options[:type]
                   when :integer, :int then 'Numeric'
                   when :string then 'String'
                   when :boolean then 'Boolean'
                   when :double then 'Float'
                   # For type that we cannot understand, DON'T send it
                   else nil
                   end
  opts = opts.merge(options)
  define_parameter(Hash[name,opts])
end