class MockController

This Mock controller keep the data in memory in hash/Array data.

Public Instance Methods

create(sObjectType, hParams) click to toggle source
# File lib/providers/mock/mock.rb, line 30
def create(sObjectType, hParams)
  PrcLib.debug("Mock: create object '%s' with parameters (hdata) '%s'",
               sObjectType, hParams[:hdata])

  result = {}
  hParams[].keys.each do |key|
    next if key == :hdata
    result[key] = hParams[key]
  end
  result.merge!(hParams[:hdata])

  @@data[sObjectType] = [] unless @@data.key?(sObjectType)

  array = @@data[sObjectType]

  array.each do |value|
    fail if value.key?(result[:name])
  end
  array << result

  result[:id] = array.length - 1

  # Typical code:
  # ~ case sObjectType
  # ~ when :public_ip
  # Following function can be executed to ensure the object :connection exists
  # ~ required?(hParams, :connection)
  # ~ required?(hParams, :server)
  # ~ ... CODE to create
  # ~ else
  # ~ controller_error "'%s' is not a valid object for 'create'", sObjectType
  # ~ end
  # The code should return some data
  # This data will be encapsulated in Lorj::Data object.
  # data will be extracted by the framework with the controller get_attr
  # function and mapped.
  PrcLib.debug("Mock: object '%s' = '%s' is created.", sObjectType, result)
  result
end
delete(sObjectType, hParams) click to toggle source
# File lib/providers/mock/mock.rb, line 91
def delete(sObjectType, hParams)
  PrcLib.debug("Mock: delete object '%s' with hdata '%s'",
               sObjectType, hParams[:hdata])
  return nil unless @@data.key?(sObjectType)

  return false if !hParams.exist?(sObjectType) || hParams[sObjectType].nil?
  @@data[sObjectType].delete(hParams[sObjectType])
  PrcLib.debug("Mock: object '%s' = '%s' is deleted.",
               sObjectType, hParams[sObjectType])
  true
end
get(sObjectType, sUniqId, hParams) click to toggle source
# File lib/providers/mock/mock.rb, line 103
def get(sObjectType, sUniqId, hParams)
  PrcLib.debug("Mock: Get object '%s' = '%s' with hdata '%s'",
               sObjectType, sUniqId, hParams[:hdata])
  return nil unless @@data.key?(sObjectType)
  @@data[sObjectType][sUniqId]
end
get_attr(oControlerObject, key) click to toggle source
# File lib/providers/mock/mock.rb, line 110
 def get_attr(oControlerObject, key)
   # This controller function read the data and
   # extract the information requested by the framework.
   # Those data will be mapped to the process data model.
   # The key is an array, to get data from a level tree.
   # [data_l1, data_l2, data_l3] => should retrieve data from structure like
   # data[ data_l2[ data_l3 ] ]
   attributes = oControlerObject

   attributes.rh_get(key)
rescue => e
  controller_error "Unable to map '%s'.\n%s", key, e.message
 end
query(sObjectType, sQuery, hParams) click to toggle source

This function return a collection which have to provide: functions: [], length, each Used by network process.

# File lib/providers/mock/mock.rb, line 73
def query(sObjectType, sQuery, hParams)
  PrcLib.debug("Mock: query object '%s' with hdata '%s' using query '%s'",
               sObjectType, hParams[:hdata], sQuery)

  return [] unless @@data.key?(sObjectType)

  result = []

  @@data[sObjectType].each do |value|
    elem = value
    sQuery.each do |query_key, query_value|
      elem = nil if !value.key?(query_key) || value[query_key] != query_value
    end
    result << elem if elem
  end
  result
end
set_attr(oControlerObject, key, value) click to toggle source
# File lib/providers/mock/mock.rb, line 124
 def set_attr(oControlerObject, key, value)
   attributes = oControlerObject

   attributes.rh_set(value, key)
rescue => e
  controller_error "Unable to map '%s' on '%s'.\n%s",
                   key, sObjectType, e.message
 end
update(sObjectType, oObject, hParams) click to toggle source
# File lib/providers/mock/mock.rb, line 133
def update(sObjectType, oObject, hParams)
  PrcLib.debug("Mock: Update object '%s' = '%s' with hdata '%s'",
               sObjectType, sUniqId, hParams[:hdata])
  return false unless @@data.key?(sObjectType)

  return false unless @@data[sObjectType][oObject[:id]].nil?
  # Considered hash object is already updated.
  # This action emule the object save which doesn't make sense in this empty
  # Mock controller.
  true
end