Class: Fog::Image::OpenStack::V2::Image

Inherits:
OpenStack::Model show all
Defined in:
lib/fog/image/openstack/v2/models/image.rb

Instance Attribute Summary

Attributes inherited from OpenStack::Model

#project

Instance Method Summary collapse

Methods inherited from OpenStack::Model

#initialize, #save

Constructor Details

This class inherits a constructor from Fog::OpenStack::Model

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_sym, *arguments, &block) ⇒ Object



43
44
45
46
47
48
49
50
51
# File 'lib/fog/image/openstack/v2/models/image.rb', line 43

def method_missing(method_sym, *arguments, &block)
  if attributes.key?(method_sym)
    attributes[method_sym]
  elsif attributes.key?(method_sym.to_s)
    attributes[method_sym.to_s]
  else
    super
  end
end

Instance Method Details

#add_member(member_id) ⇒ Object



121
122
123
124
# File 'lib/fog/image/openstack/v2/models/image.rb', line 121

def add_member(member_id)
  requires :id
  service.add_member_to_image(id, member_id)
end

#add_tag(tag) ⇒ Object



151
152
153
154
# File 'lib/fog/image/openstack/v2/models/image.rb', line 151

def add_tag(tag)
  requires :id
  service.add_tag_to_image(id, tag)
end

#add_tags(tags) ⇒ Object



146
147
148
149
# File 'lib/fog/image/openstack/v2/models/image.rb', line 146

def add_tags(tags)
  requires :id
  tags.each { |tag| add_tag tag }
end

#createObject



63
64
65
66
67
# File 'lib/fog/image/openstack/v2/models/image.rb', line 63

def create
  requires :name
  merge_attributes(service.create_image(attributes).body)
  self
end

#deactivateObject



116
117
118
119
# File 'lib/fog/image/openstack/v2/models/image.rb', line 116

def deactivate
  requires :id
  service.deactivate_image(id)
end

#destroyObject



91
92
93
94
95
# File 'lib/fog/image/openstack/v2/models/image.rb', line 91

def destroy
  requires :id
  service.delete_image(id)
  true
end

#download_data(params = {}) ⇒ Object



106
107
108
109
# File 'lib/fog/image/openstack/v2/models/image.rb', line 106

def download_data(params = {})
  requires :id
  service.download_image(id, params[:content_range], params)
end

#identityObject

This overrides the behaviour of Fog::OpenStack::Model::save() which tries to be clever and

assumes save=update if an ID is present - but Image V2 allows ID to specified on creation


71
72
73
# File 'lib/fog/image/openstack/v2/models/image.rb', line 71

def identity
  nil
end

#member(member_id) ⇒ Object



141
142
143
144
# File 'lib/fog/image/openstack/v2/models/image.rb', line 141

def member(member_id)
  requires :id
  service.get_member_details(id, member_id)
end

#membersObject



136
137
138
139
# File 'lib/fog/image/openstack/v2/models/image.rb', line 136

def members
  requires :id
  service.get_image_members(id).body['members']
end

#reactivateObject



111
112
113
114
# File 'lib/fog/image/openstack/v2/models/image.rb', line 111

def reactivate
  requires :id
  service.reactivate_image(id)
end

#remove_member(member_id) ⇒ Object



126
127
128
129
# File 'lib/fog/image/openstack/v2/models/image.rb', line 126

def remove_member(member_id)
  requires :id
  service.remove_member_from_image(id, member_id)
end

#remove_tag(tag) ⇒ Object



161
162
163
164
# File 'lib/fog/image/openstack/v2/models/image.rb', line 161

def remove_tag(tag)
  requires :id
  service.remove_tag_from_image(id, tag)
end

#remove_tags(tags) ⇒ Object



156
157
158
159
# File 'lib/fog/image/openstack/v2/models/image.rb', line 156

def remove_tags(tags)
  requires :id
  tags.each { |tag| remove_tag tag }
end

#respond_to?(method_sym, include_all = false) ⇒ Boolean

Returns:

  • (Boolean)


53
54
55
56
57
58
59
60
61
# File 'lib/fog/image/openstack/v2/models/image.rb', line 53

def respond_to?(method_sym, include_all = false)
  if attributes.key?(method_sym)
    true
  elsif attributes.key?(method_sym.to_s)
    true
  else
    super
  end
end

#update(attr = {}) ⇒ Object

Hash of attributes to update is passed in. Setting value to nil will delete that attribute.

Here we convert that hash into a form suitable for Glance's usage of JSON Patch (RFC6902)


77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/fog/image/openstack/v2/models/image.rb', line 77

def update(attr = {})
  requires :id
  json_patch = []
  attr.each do |key, value|
    op = (@attributes.keys.include? key) ? 'replace' : 'add'
    op = 'remove' if value.nil?
    json_patch << {:op => op, :path => "/#{key}", :value => value}
  end
  merge_attributes(
    service.update_image(id, json_patch).body
  )
  self
end

#update_member(member) ⇒ Object



131
132
133
134
# File 'lib/fog/image/openstack/v2/models/image.rb', line 131

def update_member(member)
  requires :id
  service.update_image_member(id, member)
end

#upload_data(io_obj) ⇒ Object



97
98
99
100
101
102
103
104
# File 'lib/fog/image/openstack/v2/models/image.rb', line 97

def upload_data(io_obj)
  requires :id
  if io_obj.kind_of? Hash
    service.upload_image(id, nil, io_obj)
  else
    service.upload_image(id, io_obj)
  end
end