Class: Kytoon::Providers::CloudServersVPC::Server

Inherits:
Object
  • Object
show all
Defined in:
lib/kytoon/providers/cloud_servers_vpc/server.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Server

Returns a new instance of Server.



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/kytoon/providers/cloud_servers_vpc/server.rb', line 24

def initialize(options={})
@id=options[:id].to_i
@name=options[:name]
@description=options[:description] or @description=@name
@external_ip_addr=options[:external_ip_addr]
@internal_ip_addr=options[:internal_ip_addr]
@cloud_server_id_number=options[:cloud_server_id_number]
@flavor_id=options[:flavor_id]
@image_id=options[:image_id]
@admin_password=options[:admin_password]
@server_group_id=options[:server_group_id].to_i
@openvpn_server = [true, "true"].include?(options[:openvpn_server])
@retry_count=options[:retry_count].to_i or 0
@error_message=options[:error_message]
@status=options[:status]
end

Instance Attribute Details

#admin_passwordObject

Returns the value of attribute admin_password.



22
23
24
# File 'lib/kytoon/providers/cloud_servers_vpc/server.rb', line 22

def admin_password
  @admin_password
end

#cloud_server_id_numberObject

Returns the value of attribute cloud_server_id_number.



14
15
16
# File 'lib/kytoon/providers/cloud_servers_vpc/server.rb', line 14

def cloud_server_id_number
  @cloud_server_id_number
end

#descriptionObject

Returns the value of attribute description.



11
12
13
# File 'lib/kytoon/providers/cloud_servers_vpc/server.rb', line 11

def description
  @description
end

#error_messageObject

Returns the value of attribute error_message.



20
21
22
# File 'lib/kytoon/providers/cloud_servers_vpc/server.rb', line 20

def error_message
  @error_message
end

#external_ip_addrObject

Returns the value of attribute external_ip_addr.



12
13
14
# File 'lib/kytoon/providers/cloud_servers_vpc/server.rb', line 12

def external_ip_addr
  @external_ip_addr
end

#flavor_idObject

Returns the value of attribute flavor_id.



15
16
17
# File 'lib/kytoon/providers/cloud_servers_vpc/server.rb', line 15

def flavor_id
  @flavor_id
end

#idObject

Returns the value of attribute id.



9
10
11
# File 'lib/kytoon/providers/cloud_servers_vpc/server.rb', line 9

def id
  @id
end

#image_idObject

Returns the value of attribute image_id.



16
17
18
# File 'lib/kytoon/providers/cloud_servers_vpc/server.rb', line 16

def image_id
  @image_id
end

#internal_ip_addrObject

Returns the value of attribute internal_ip_addr.



13
14
15
# File 'lib/kytoon/providers/cloud_servers_vpc/server.rb', line 13

def internal_ip_addr
  @internal_ip_addr
end

#nameObject

Returns the value of attribute name.



10
11
12
# File 'lib/kytoon/providers/cloud_servers_vpc/server.rb', line 10

def name
  @name
end

#openvpn_serverObject

Returns the value of attribute openvpn_server.



18
19
20
# File 'lib/kytoon/providers/cloud_servers_vpc/server.rb', line 18

def openvpn_server
  @openvpn_server
end

#retry_countObject

Returns the value of attribute retry_count.



19
20
21
# File 'lib/kytoon/providers/cloud_servers_vpc/server.rb', line 19

def retry_count
  @retry_count
end

#server_group_idObject

Returns the value of attribute server_group_id.



17
18
19
# File 'lib/kytoon/providers/cloud_servers_vpc/server.rb', line 17

def server_group_id
  @server_group_id
end

#statusObject

Returns the value of attribute status.



21
22
23
# File 'lib/kytoon/providers/cloud_servers_vpc/server.rb', line 21

def status
  @status
end

Class Method Details

.create(server) ⇒ Object



108
109
110
111
112
113
# File 'lib/kytoon/providers/cloud_servers_vpc/server.rb', line 108

def self.create(server)

  xml=Connection.post("/servers.xml", server.to_xml)
  server=Server.from_xml(xml)

end

.from_xml(xml) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/kytoon/providers/cloud_servers_vpc/server.rb', line 67

def self.from_xml(xml)

  server=nil
      dom = REXML::Document.new(xml)
      REXML::XPath.each(dom, "/*") do |sg_xml|

    server=Server.new(
      :id => XMLUtil.element_text(sg_xml, "id").to_i,
      :name => XMLUtil.element_text(sg_xml, "name"),
      :flavor_id => XMLUtil.element_text(sg_xml, "flavor-id"),
      :image_id => XMLUtil.element_text(sg_xml, "image-id"),
      :admin_password => XMLUtil.element_text(sg_xml, "admin-password"),
      :description => XMLUtil.element_text(sg_xml, "description"),
      :cloud_server_id_number => XMLUtil.element_text(sg_xml, "cloud-server-id-number"),
      :description => XMLUtil.element_text(sg_xml, "description"),
      :external_ip_addr => XMLUtil.element_text(sg_xml, "external-ip-addr"),
      :internal_ip_addr => XMLUtil.element_text(sg_xml, "internal-ip-addr"),
      :server_group_id => XMLUtil.element_text(sg_xml, "server-group-id"),
      :openvpn_server => XMLUtil.element_text(sg_xml, "openvpn_server"),
      :retry_count => XMLUtil.element_text(sg_xml, "retry-count"),
      :error_message => XMLUtil.element_text(sg_xml, "error-message"),
      :status => XMLUtil.element_text(sg_xml, "status")
    )
  end

  server

end

Instance Method Details

#deleteObject



104
105
106
# File 'lib/kytoon/providers/cloud_servers_vpc/server.rb', line 104

def delete
    Connection.delete("/servers/#{@id}.xml")
end

#openvpn_server?Boolean

Returns:

  • (Boolean)


41
42
43
# File 'lib/kytoon/providers/cloud_servers_vpc/server.rb', line 41

def openvpn_server?
  return @openvpn_server
end

#rebuildObject



96
97
98
99
100
101
102
# File 'lib/kytoon/providers/cloud_servers_vpc/server.rb', line 96

def rebuild

  raise "Error: Rebuilding the OpenVPN server is not supported at this time." if openvpn_server?

  Connection.post("/servers/#{@id}/rebuild", {})

end

#to_xmlObject



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/kytoon/providers/cloud_servers_vpc/server.rb', line 45

def to_xml

  xml = Builder::XmlMarkup.new
  xml.tag! "server" do |server|
    server.id(@id)
    server.name(@name)
    server.description(@description)
    server.status(@status) if @status
    server.tag! "external-ip-addr", @external_ip_addr if @external_ip_addr
    server.tag! "internal-ip-addr", @internal_ip_addr if @internal_ip_addr
    server.tag! "cloud-server-id-number", @cloud_server_id_number if @cloud_server_id_number
    server.tag! "flavor-id", @flavor_id
    server.tag! "image-id", @image_id
    server.tag! "admin-password", @admin_password
    server.tag! "server-group-id", @server_group_id
    server.tag! "openvpn-server", "true" if openvpn_server?
    server.tag! "error-message", @error_message if @error_message
  end
  xml.target!

end