Module: HammerCLI::Apipie::Resource::ClassMethods

Defined in:
lib/hammer_cli/apipie/resource.rb

Instance Method Summary collapse

Instance Method Details

#action(action = nil) ⇒ Object



90
91
92
93
94
# File 'lib/hammer_cli/apipie/resource.rb', line 90

def action(action=nil)
  @api_action = action unless action.nil?
  return @api_action if @api_action
  return superclass.action if superclass.respond_to? :action
end

#class_resourceObject



57
58
59
60
# File 'lib/hammer_cli/apipie/resource.rb', line 57

def class_resource
  return @api_resource if @api_resource
  return superclass.class_resource if superclass.respond_to? :class_resource
end

#connection_name(resource_class) ⇒ Object



53
54
55
# File 'lib/hammer_cli/apipie/resource.rb', line 53

def connection_name(resource_class)
  :apipie
end

#connection_optionsObject



47
48
49
50
51
# File 'lib/hammer_cli/apipie/resource.rb', line 47

def connection_options
  {
    :connector => HammerCLI::Apipie::ApipieConnector
  }
end

#module_resourceObject



62
63
64
65
66
67
68
69
# File 'lib/hammer_cli/apipie/resource.rb', line 62

def module_resource
  return nil unless self.name
  enclosing_module = self.name.split("::")[0..-2].inject(Object) { |mod, cls| mod.const_get cls }

  if enclosing_module.respond_to? :resource
    enclosing_module.resource
  end
end

#resource(resource = nil, action = nil) ⇒ Object



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/hammer_cli/apipie/resource.rb', line 71

def resource(resource=nil, action=nil)
  unless resource.nil?
    api = HammerCLI::Connection.create(
      connection_name(resource),
      resource_config,
      connection_options).api
    if api.has_resource?(resource)
      @api_resource = api.resource(resource)
    else
      logger.warn "Resource '#{resource}' does not exist in the API"
    end
  end
  @api_action = action unless action.nil?

  # if the resource definition is not available in this class
  # try to look it up in it's enclosing module/class
  return class_resource || module_resource
end

#resource_configObject



43
44
45
# File 'lib/hammer_cli/apipie/resource.rb', line 43

def resource_config
  {}
end

#resource_defined?Boolean

Returns:

  • (Boolean)


96
97
98
# File 'lib/hammer_cli/apipie/resource.rb', line 96

def resource_defined?
  not (resource.nil? or action.nil?)
end