Class: Fog::Compute::Bluebox::Server
- Inherits:
-
Server
- Object
- Server
- Fog::Compute::Bluebox::Server
- Defined in:
- lib/fog/bluebox/models/compute/server.rb
Instance Attribute Summary collapse
-
#hostname ⇒ Object
Returns the value of attribute hostname.
-
#lb_applications ⇒ Object
Returns the value of attribute lb_applications.
-
#lb_backends ⇒ Object
Returns the value of attribute lb_backends.
-
#lb_services ⇒ Object
Returns the value of attribute lb_services.
-
#password ⇒ Object
Returns the value of attribute password.
Instance Method Summary collapse
- #destroy ⇒ Object
- #flavor ⇒ Object
- #image ⇒ Object
-
#initialize(attributes = {}) ⇒ Server
constructor
A new instance of Server.
- #location ⇒ Object
- #private_ip_address ⇒ Object
- #public_ip_address ⇒ Object
- #ready? ⇒ Boolean
- #reboot(type = 'SOFT') ⇒ Object
- #save ⇒ Object
- #setup(credentials = {}) ⇒ Object
- #username ⇒ Object
Constructor Details
#initialize(attributes = {}) ⇒ Server
Returns a new instance of Server.
27 28 29 30 31 32 |
# File 'lib/fog/bluebox/models/compute/server.rb', line 27 def initialize(attributes={}) self.flavor_id ||= '94fd37a7-2606-47f7-84d5-9000deda52ae' # Block 1GB Virtual Server self.image_id ||= 'a8f05200-7638-47d1-8282-2474ef57c4c3' # Scientific Linux 6 self.location_id ||= '37c2bd9a-3e81-46c9-b6e2-db44a25cc675' # Seattle, WA super end |
Instance Attribute Details
#hostname ⇒ Object
Returns the value of attribute hostname.
25 26 27 |
# File 'lib/fog/bluebox/models/compute/server.rb', line 25 def hostname @hostname end |
#lb_applications ⇒ Object
Returns the value of attribute lb_applications.
25 26 27 |
# File 'lib/fog/bluebox/models/compute/server.rb', line 25 def lb_applications @lb_applications end |
#lb_backends ⇒ Object
Returns the value of attribute lb_backends.
25 26 27 |
# File 'lib/fog/bluebox/models/compute/server.rb', line 25 def lb_backends @lb_backends end |
#lb_services ⇒ Object
Returns the value of attribute lb_services.
25 26 27 |
# File 'lib/fog/bluebox/models/compute/server.rb', line 25 def lb_services @lb_services end |
#password ⇒ Object
Returns the value of attribute password.
25 26 27 |
# File 'lib/fog/bluebox/models/compute/server.rb', line 25 def password @password end |
Instance Method Details
#destroy ⇒ Object
34 35 36 37 38 |
# File 'lib/fog/bluebox/models/compute/server.rb', line 34 def destroy requires :id service.destroy_block(id) true end |
#flavor ⇒ Object
40 41 42 43 |
# File 'lib/fog/bluebox/models/compute/server.rb', line 40 def flavor requires :flavor_id service.flavors.get(flavor_id) end |
#image ⇒ Object
45 46 47 48 |
# File 'lib/fog/bluebox/models/compute/server.rb', line 45 def image requires :image_id service.images.get(image_id) end |
#location ⇒ Object
50 51 52 53 |
# File 'lib/fog/bluebox/models/compute/server.rb', line 50 def location requires :location_id service.locations.get(location_id) end |
#private_ip_address ⇒ Object
55 56 57 |
# File 'lib/fog/bluebox/models/compute/server.rb', line 55 def private_ip_address nil end |
#public_ip_address ⇒ Object
59 60 61 62 63 |
# File 'lib/fog/bluebox/models/compute/server.rb', line 59 def public_ip_address if ip = ips.first ip['address'] end end |
#ready? ⇒ Boolean
65 66 67 |
# File 'lib/fog/bluebox/models/compute/server.rb', line 65 def ready? self.state == 'running' end |
#reboot(type = 'SOFT') ⇒ Object
69 70 71 72 73 |
# File 'lib/fog/bluebox/models/compute/server.rb', line 69 def reboot(type = 'SOFT') requires :id service.reboot_block(id, type) true end |
#save ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/fog/bluebox/models/compute/server.rb', line 75 def save raise Fog::Errors::Error.new('Resaving an existing object may create a duplicate') if persisted? requires :flavor_id, :image_id, :location_id = {} unless persisted? # new record raise(ArgumentError, "password or public_key is required for this operation") if !password && !public_key ['ssh_public_key'] = public_key if public_key ['password'] = password if @password end if @lb_backends ['lb_backends'] = lb_backends elsif @lb_services ['lb_services'] = lb_services elsif @lb_applications ['lb_applications'] = lb_applications end ['username'] = username ['hostname'] = hostname if @hostname ['ipv6_only'] = ipv6_only if ipv6_only data = service.create_block(flavor_id, image_id, location_id, ) merge_attributes(data.body) true end |
#setup(credentials = {}) ⇒ Object
102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/fog/bluebox/models/compute/server.rb', line 102 def setup(credentials = {}) requires :identity, :ips, :public_key, :username Fog::SSH.new(ssh_ip_address, username, credentials).run([ %{mkdir .ssh}, %{echo "#{public_key}" >> ~/.ssh/authorized_keys}, %{passwd -l #{username}}, %{echo "#{Fog::JSON.encode(attributes)}" >> ~/attributes.json} ]) rescue Errno::ECONNREFUSED sleep(1) retry end |
#username ⇒ Object
115 116 117 |
# File 'lib/fog/bluebox/models/compute/server.rb', line 115 def username @username ||= 'deploy' end |