Project

scaleway

0.01
No commit activity in last 3 years
No release in over 3 years
There's a lot of open issues
Ruby bindings for the Scaleway API.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 0.2
~> 10.1
~> 3.1

Runtime

 Project Readme

Scaleway Rubygem

Build Status Gem Version

Easy to use Scaleway api client.

Installation

Manual instalation:

gem install scaleway

add this to your gemfile:

gem 'scaleway'

Usage

Configure the client

require 'scaleway'

Scaleway.organization = <organization_key>
Scaleway.token = <token>

# You can specify the zone, the default zone is 'par1'
Scaleway.zone = 'ams1'

Servers

# list all servers
Scaleway::Server.all

# list with filter
Scaleway::Server.all state: :running

# create a new server with default values
Scaleway::Server.create

# create a new server with name and tags
Scaleway::Server.create :name => 'my_new_server', tags: ['prod']

# get a server by id
server = Scaleway::Server.find <server_id>

# edit a server
server = Scaleway::Server.find <server_id>
server.name = 'new_name'
Scaleway::Server.edit server.id, server

# actions on a server
Scaleway::Server.power_on server.id

Scaleway::Server.power_off server.id

Scaleway::Server.terminate server.id

# destroy a server
Scaleway::Server.destroy server.id

Marketplace

# list all marketplace images
Scaleway::Marketplace.all

# get local image by id
image = Scaleway::Marketplace.find_local_image <marketplace_image_id>

# get local image by marketplace image id for arch arm
image = Scaleway::Marketplace.find_local_image <marketplace_image_id>, arch: 'arm'

# get local image by name
image = Scaleway::Marketplace.find_local_image_by_name("Docker")

Images

# list all images
Scaleway::Image.all

# get image by id
image = Scaleway::Image.find <image_id>

# get image by name
image = Scaleway::Image.find_by_name('Ubuntu')

# create an image
image = Scaleway::Image.create root_volume: snapshot

# edit an image
image = Scaleway::Image.edit id, image

# destroy an image
image = Scaleway::Image.destroy id

Volumes

# list all volumes
Scaleway::Volume.all

# get volume by id
volume = Scaleway::Volume.find <volume_id>

# create an volume
volume = Scaleway::Volume.create
volume = Scaleway::Volume.create size: 100 * 10 ** 9, volume_type: 'l_ssd'

# edit an volume
volume = Scaleway::Volume.edit id, volume

# destroy an volume
volume = Scaleway::Volume.destroy id

Snapshots

# list all snapshots
Scaleway::Volume.all

# get snapshot by id
snapshot = Scaleway::Snapshot.find <snapshot_id>

# create an snapshot
snapshot = Scaleway::Snapshot.create volume_id: id

# edit an snapshot
snapshot = Scaleway::Snapshot.edit id, snapshot

# destroy an snapshot
snapshot = Scaleway::Snapshot.destroy id

Ip addresses

# list all ip addresses
Scaleway::Ip.all

# get Ip
ip = Scaleway::Ip.find <ip_id>
ip = Scaleway::Ip.find 127.0.0.1

# reserve an ip
ip = Scaleway::Ip.reserve
# or
ip = Scaleway::Ip.create

# edit an ip
ip = Scaleway::Ip.edit id, ip

# release an ip
ip = Scaleway::Ip.destroy id

Handle exceptions

# Not found
begin
	puts Scaleway::Server.find <invalid_id>
rescue Scaleway::NotFound => e
	# handle error here
end

# Other
begin
	puts Scaleway::Server.create extra_field: ['nope']
rescue Scaleway::APIError => e
	# handle error here
end

Example

require 'scaleway'

Scaleway.organization = <organization_key>
Scaleway.token = <token>

# get the docker image from the marketplace
image = Scaleway::Marketplace.find_local_image_by_name('Docker')

# create 5 new servers
5.times do |x|
	Scaleway::Server.create name: "docker#{x}", image: image.id, tags: ['docker']
end

# power on
Scaleway::Server.all.each do |server|
	Scaleway::Server.power_on(server.id)
end

# do something ...

# terminate
Scaleway::Server.all.each do |server|
	Scaleway::Server.terminate(server.id)
end