Class: Serverkit::Resources::Base

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Validations
Defined in:
lib/serverkit/resources/base.rb

Direct Known Subclasses

Command, Entry, Git, Missing, Nothing, Package, Recipe, Service, Symlink, Unknown, User

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(recipe, attributes) ⇒ Base

Returns a new instance of Base.

Parameters:



54
55
56
57
# File 'lib/serverkit/resources/base.rb', line 54

def initialize(recipe, attributes)
  @attributes = attributes
  @recipe = recipe
end

Class Attribute Details

.abstract_class=(value) ⇒ Object (writeonly)

Sets the attribute abstract_class

Parameters:

  • value

    the value to set the attribute abstract_class to.



12
13
14
# File 'lib/serverkit/resources/base.rb', line 12

def abstract_class=(value)
  @abstract_class = value
end

Instance Attribute Details

#attributesObject (readonly)

Returns the value of attribute attributes.



32
33
34
# File 'lib/serverkit/resources/base.rb', line 32

def attributes
  @attributes
end

#backendObject

Returns the value of attribute backend.



30
31
32
# File 'lib/serverkit/resources/base.rb', line 30

def backend
  @backend
end

#check_resultObject (readonly)

Returns the value of attribute check_result.



32
33
34
# File 'lib/serverkit/resources/base.rb', line 32

def check_result
  @check_result
end

#recheck_resultObject (readonly)

Returns the value of attribute recheck_result.



32
33
34
# File 'lib/serverkit/resources/base.rb', line 32

def recheck_result
  @recheck_result
end

#recipeObject (readonly)

Returns the value of attribute recipe.



32
33
34
# File 'lib/serverkit/resources/base.rb', line 32

def recipe
  @recipe
end

Class Method Details

.abstract_class?Boolean

Returns:

  • (Boolean)


14
15
16
# File 'lib/serverkit/resources/base.rb', line 14

def abstract_class?
  !!@abstract_class
end

.attribute(name, options = {}) ⇒ Object

Note:

DSL method to define attribute with its validations



19
20
21
22
23
24
25
# File 'lib/serverkit/resources/base.rb', line 19

def attribute(name, options = {})
  default = options.delete(:default)
  define_method(name) do
    @attributes[name.to_s] || default
  end
  validates name, options unless options.empty?
end

Instance Method Details

#all_errorsArray<Serverkit::Errors::Base>

Note:

For override

Returns:



61
62
63
# File 'lib/serverkit/resources/base.rb', line 61

def all_errors
  attribute_validation_errors
end

#handlersArray<Serverkit::Resource>

Returns:

  • (Array<Serverkit::Resource>)


66
67
68
69
70
71
72
# File 'lib/serverkit/resources/base.rb', line 66

def handlers
  @handlers ||= Array(notify).map do |id|
    recipe.handlers.find do |handler|
      handler.id == id
    end
  end.compact
end

#idString

Note:

For logging and notifying

Returns:

  • (String)


76
77
78
# File 'lib/serverkit/resources/base.rb', line 76

def id
  @attributes["id"] || default_id
end

#notifiable?true, false

Returns True if this resource should call any handler.

Returns:

  • (true, false)

    True if this resource should call any handler



81
82
83
# File 'lib/serverkit/resources/base.rb', line 81

def notifiable?
  @recheck_result == true && !handlers.nil?
end

#run_applyObject

Note:

#check and #apply wrapper



86
87
88
89
90
91
# File 'lib/serverkit/resources/base.rb', line 86

def run_apply
  unless run_check
    apply
    @recheck_result = !!recheck_with_script
  end
end

#run_checktrue, false

Note:

#check wrapper

Returns:

  • (true, false)


95
96
97
# File 'lib/serverkit/resources/base.rb', line 95

def run_check
  @check_result = !!check_with_script
end

#successful?Boolean

Returns:

  • (Boolean)


99
100
101
# File 'lib/serverkit/resources/base.rb', line 99

def successful?
  successful_on_check? || successful_on_recheck?
end

#successful_on_check?Boolean

Returns:

  • (Boolean)


103
104
105
# File 'lib/serverkit/resources/base.rb', line 103

def successful_on_check?
  @check_result == true
end

#successful_on_recheck?Boolean

Returns:

  • (Boolean)


107
108
109
# File 'lib/serverkit/resources/base.rb', line 107

def successful_on_recheck?
  @recheck_result == true
end

#to_aArray<Serverkit::Resources::Base>

Note:

recipe resource will override to replace itself with multiple resources

Returns:



113
114
115
# File 'lib/serverkit/resources/base.rb', line 113

def to_a
  [self]
end