civo 0.3.2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dc3b386f26beab6d9fef35b4abfd319a81b719d3
4
- data.tar.gz: 5d0c74b1a28e2130a4366bbbc0bf8789cd07b0e2
3
+ metadata.gz: ed8c49dcdc3351d964ad4efd690048469d25730b
4
+ data.tar.gz: 24eb760096a174ec86a90b0a94a5e0fb879da391
5
5
  SHA512:
6
- metadata.gz: a6a67a73e69fda2aafbaf6b39e791fdd260bb65535b242a4791b1a1c5414fbf427e8951b8d16e58b773e59010d18391b1be00a0a697bb268032c867e850c6e89
7
- data.tar.gz: 32236f8304ff8bdc87a85657a6d7e73fa44745b6b63c75f9d8f0849a21b9e04cdfa535df7a6d29942695c367b207307569b44aa7f9aef6c0688e13eccd30b2dd
6
+ metadata.gz: 8f733e989736d52767e1dac30288ee3cdc65cc7cc62dc2209657d02533660e69ce812e18cb31935b246832044aa8e46df66543843e721ee0d72baaa57f81fbda
7
+ data.tar.gz: f95b3224fb2dd1959396f11cfa7423270ee77850ead33bb8302675a347ab674574014e9c89d8832738dda6e3658b8f14253902524e574edf703832dd8bf992c9
@@ -1,3 +1,3 @@
1
1
  module Civo
2
- VERSION = "0.3.2"
2
+ VERSION = "0.3.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: civo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Jeffries
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-18 00:00:00.000000000 Z
11
+ date: 2016-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: flexirest
@@ -55,8 +55,7 @@ dependencies:
55
55
  description: A command-line client and API access classes for civo.com
56
56
  email:
57
57
  - andy@absolutedevops.io
58
- executables:
59
- - civo
58
+ executables: []
60
59
  extensions: []
61
60
  extra_rdoc_files: []
62
61
  files:
@@ -71,20 +70,8 @@ files:
71
70
  - app/models/civo/size.rb
72
71
  - app/models/civo/ssh_key.rb
73
72
  - app/models/civo/template.rb
74
- - bin/civo
75
73
  - config/routes.rb
76
74
  - lib/civo.rb
77
- - lib/civo/cli/client.rb
78
- - lib/civo/cli/commands/accounts.rb
79
- - lib/civo/cli/commands/instances.rb
80
- - lib/civo/cli/commands/quota.rb
81
- - lib/civo/cli/commands/regions.rb
82
- - lib/civo/cli/commands/sizes.rb
83
- - lib/civo/cli/commands/sshkeys.rb
84
- - lib/civo/cli/commands/templates.rb
85
- - lib/civo/cli/commands/tokens.rb
86
- - lib/civo/cli/config.rb
87
- - lib/civo/cli/token.rb
88
75
  - lib/civo/engine.rb
89
76
  - lib/civo/version.rb
90
77
  - lib/tasks/civo_tasks.rake
data/bin/civo DELETED
@@ -1,25 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- ENGINE_ROOT = File.expand_path('../..', __FILE__)
4
- ENGINE_PATH = File.expand_path('../../lib/civo/engine', __FILE__)
5
-
6
- # Set up gems listed in the Gemfile.
7
- ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
8
- require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
9
- require 'commander/import'
10
- require 'toml'
11
- require 'flexirest'
12
- require_relative "#{ENGINE_ROOT}/lib/civo.rb"
13
- require_relative "#{ENGINE_ROOT}/lib/civo/version.rb"
14
-
15
- program :version, Civo::VERSION
16
- program :description, 'Civo CLI and API client library'
17
-
18
- require_relative "#{ENGINE_ROOT}/lib/civo/cli/commands/accounts.rb"
19
- require_relative "#{ENGINE_ROOT}/lib/civo/cli/commands/sshkeys.rb"
20
- require_relative "#{ENGINE_ROOT}/lib/civo/cli/commands/quota.rb"
21
- require_relative "#{ENGINE_ROOT}/lib/civo/cli/commands/sizes.rb"
22
- require_relative "#{ENGINE_ROOT}/lib/civo/cli/commands/regions.rb"
23
- require_relative "#{ENGINE_ROOT}/lib/civo/cli/commands/templates.rb"
24
- require_relative "#{ENGINE_ROOT}/lib/civo/cli/commands/instances.rb"
25
- require_relative "#{ENGINE_ROOT}/lib/civo/cli/commands/tokens.rb"
@@ -1,56 +0,0 @@
1
- module Civo
2
- class Client
3
- def self.tabulate(hash, titles, options = {})
4
- longest_key_length = hash.keys.max_by(&:length).try(:length) || 5
5
-
6
- default = hash.delete("**DEFAULT**")
7
- title = "%-#{longest_key_length}s | %s" % [titles[0], titles[1]]
8
- puts title
9
- puts "%s-|-%s" % [("-" * longest_key_length), ("-" * (69-longest_key_length))]
10
- keys = hash.keys
11
- keys.sort! if options[:sort] == true
12
- keys.each do |key|
13
- value = hash[key]
14
- print "%-#{longest_key_length}s | %s" % [key, value]
15
- if key == default
16
- print " (DEFAULT)"
17
- end
18
- puts
19
- end
20
- end
21
-
22
- def self.tabulate_flexirest(data, mappings)
23
- columns = mappings.dup
24
- columns.each do |k, nice|
25
- columns[k] = {max_width: (nice.length > 5 ? nice.length : 5), label: nice }
26
- end
27
-
28
- data.each do |record|
29
- columns.each do |k, v|
30
- if block_given?
31
- yield record
32
- end
33
- length = record.send(k).to_s.length
34
- if record.send(k).to_s.length > v[:max_width]
35
- v[:max_width] = length
36
- end
37
- end
38
- end
39
-
40
- puts columns.keys.map {|k| "%-#{columns[k][:max_width]}s" % columns[k][:label] }.to_a.join(" | ")
41
- puts columns.keys.map {|k| "-" * columns[k][:max_width] }.to_a.join("-+-")
42
-
43
- data.each do |record|
44
- row = []
45
- columns.each do |k, v|
46
- value = record.send(k)
47
- if value.is_a? Array
48
- value = value.join(", ")
49
- end
50
- row << "%-#{columns[k][:max_width]}s" % value
51
- end
52
- puts (row.join(" | "))
53
- end
54
- end
55
- end
56
- end
@@ -1,64 +0,0 @@
1
- command "accounts" do |c|
2
- c.description = "List known accounts (CIVO-INTERNAL-USE ONLY)"
3
- c.action do |args, options|
4
- begin
5
- accounts = Civo::Account.all
6
- Civo::Client.tabulate_flexirest accounts, {username: "Account", api_key: "API Key"}
7
- rescue Flexirest::HTTPUnauthorisedClientException, Flexirest::HTTPForbiddenClientException
8
- puts "Access denied to your default token, ensure it's set correctly with 'civo tokens'"
9
- end
10
- end
11
- end
12
- alias_command "account", "accounts"
13
-
14
- command "accounts:create" do |c|
15
- c.description = "Create an account (CIVO-INTERNAL-USE ONLY)"
16
- c.example "Creates an account called 'testuser'", 'civo accounts:create testuser'
17
- c.action do |args, options|
18
- begin
19
- account = Civo::Account.create(name: args.first)
20
- puts "Account '#{args.first}' created. The API key is '#{account.api_key}'"
21
- rescue Flexirest::HTTPUnauthorisedClientException, Flexirest::HTTPForbiddenClientException
22
- puts "Access denied to your default token, ensure it's set correctly with 'civo tokens'"
23
- end
24
- end
25
- end
26
- alias_command "account:create", "accounts:create"
27
-
28
- command "accounts:reset" do |c|
29
- c.description = "Reset the API Key for an account (CIVO-INTERNAL-USE ONLY)"
30
- c.example "Resets the account called 'testuser' with a new API key", 'civo accounts:reset testuser'
31
- c.action do |args, options|
32
- begin
33
- account = Civo::Account.reset(name: args.first)
34
- puts "Account '#{args.first}' reset, the new API key is '#{account.api_key}'"
35
- rescue Flexirest::HTTPUnauthorisedClientException, Flexirest::HTTPForbiddenClientException
36
- puts "Access denied to your default token, ensure it's set correctly with 'civo tokens'"
37
- end
38
- end
39
- end
40
- alias_command "account:reset", "accounts:reset"
41
-
42
- command "accounts:remove" do |c|
43
- c.description = "Remove an account (and all instances, networks, etc) (CIVO-INTERNAL-USE ONLY)"
44
- c.example "Removes an account called 'testuser'", 'civo accounts:remove testuser'
45
- c.action do |args, options|
46
- begin
47
- account = Civo::Account.remove(name: args.first)
48
- if account.result == "ok"
49
- puts "Account '#{args.first}' has been removed."
50
- else
51
- puts "Failed to delete that account: #{account.inspect}"
52
- end
53
- rescue Flexirest::HTTPUnauthorisedClientException, Flexirest::HTTPForbiddenClientException
54
- puts "Access denied to your default token, ensure it's set correctly with 'civo tokens'"
55
- rescue Flexirest::HTTPNotFoundClientException => e
56
- puts "Couldn't find that account to remove, maybe it's already been removed?"
57
- rescue Flexirest::HTTPServerException => e
58
- puts "Unable to remove #{e.result.reason}"
59
- end
60
- end
61
- end
62
- alias_command "account:remove", "accounts:remove"
63
- alias_command "accounts:delete", "accounts:remove"
64
- alias_command "account:delete", "accounts:remove"
@@ -1,140 +0,0 @@
1
- command "instances" do |c|
2
- c.description = "List known instances"
3
- c.action do |args, options|
4
- begin
5
- instances = Civo::Instance.all
6
- Civo::Client.tabulate_flexirest instances, {id: "ID", hostname: "Hostname", size: "Size", nice_ip_addresses: "IP Addresses", status: "Status", initial_user: "User", initial_password: "Password"}
7
- rescue Flexirest::HTTPServerException => e
8
- puts "An error occurred: #{e.result.reason}"
9
- exit 3
10
- rescue Flexirest::ResponseParseException => e
11
- puts "An error occurred: #{e.inspect}"
12
- exit 4
13
- rescue Flexirest::HTTPUnauthorisedClientException, Flexirest::HTTPForbiddenClientException
14
- puts "Access denied to your default token, ensure it's set correctly with 'civo tokens'"
15
- end
16
- end
17
- end
18
- alias_command "instance", "instances"
19
-
20
- command "instances:create" do |c|
21
- c.description = "Create an instance"
22
- c.option "--size STRING", String, "The size from 'civo sizes'"
23
- c.option "--region STRING", String, "The region from 'civo regions'"
24
- c.option "--ssh-key STRING", String, "The SSH key name from 'civo sshkeys'"
25
- c.option "--[no-]public-ip", "Should a public IP address be allocated"
26
- c.option "--template STRING", String, "The template from 'civo templates'"
27
- c.option "--initial-user STRING", String, "The default user to create (defaults to 'civo')"
28
- c.example "Creates an instance called 'test1.example.com'", 'civo instances:create test1.example.com --size g1.small --region svg1 --ssh-key default'
29
- c.action do |args, options|
30
- begin
31
- params = {}
32
- params[:size] = options.size if options.size
33
- params[:region] = options.region if options.region
34
- params[:ssh_key] = options.ssh_key if options.ssh_key
35
- params[:public_ip] = options.public_ip if options.public_ip
36
- params[:template] = options.template if options.template
37
- params[:initial_user] = options.initial_user if options.initial_user
38
- params[:hostname] = args.first
39
- instance = Civo::Instance.create(params)
40
- puts "Instance '#{args.first}' created. The ID is '#{instance.id}' and its status is #{instance.status}"
41
- rescue Flexirest::HTTPServerException => e
42
- puts "An error occurred: #{e.result.reason}"
43
- exit 3
44
- rescue Flexirest::HTTPUnauthorisedClientException, Flexirest::HTTPForbiddenClientException
45
- puts "Access denied to your default token, ensure it's set correctly with 'civo tokens'"
46
- end
47
- end
48
- end
49
- alias_command "instance:create", "instances:create"
50
-
51
- command "instances:remove" do |c|
52
- c.description = "Remove an instance by hostname or id"
53
- c.example "Removes an instance called 'test.example.com'", 'civo instances:remove test.example.com'
54
- c.action do |args, options|
55
- begin
56
- if args.first[/(\w{8}(-\w{4}){3}-\w{12}?)/]
57
- id = args.first
58
- else
59
- instance = Civo::Instance.all.detect {|i| i.hostname == args.first}
60
- id = instance.id
61
- end
62
- instance = Civo::Instance.remove(id: id)
63
- if instance.result == "ok"
64
- puts "Instance '#{args.first}' has been removed."
65
- else
66
- puts "Failed to delete that instance: #{instance.inspect}"
67
- end
68
- rescue Flexirest::HTTPUnauthorisedClientException, Flexirest::HTTPForbiddenClientException
69
- puts "Access denied to your default token, ensure it's set correctly with 'civo tokens'"
70
- rescue Flexirest::HTTPNotFoundClientException => e
71
- puts "Couldn't find that account to remove, maybe it's already been removed?"
72
- rescue Flexirest::HTTPServerException => e
73
- puts "Unable to remove #{e.result.reason}"
74
- end
75
- end
76
- end
77
- alias_command "instance:remove", "instances:remove"
78
- alias_command "instances:delete", "instances:remove"
79
- alias_command "instance:delete", "instances:remove"
80
-
81
- command "instances:upgrade" do |c|
82
- c.description = "Upgrade an instance by hostname or id"
83
- c.option "--size STRING", String, "The size from 'civo sizes', must be larger than the current size"
84
- c.example "Upgrades an instance called 'test.example.com' to `g1.large` size", 'civo instances:upgrade test.example.com --size g1.large'
85
- c.action do |args, options|
86
- begin
87
- if args.first[/(\w{8}(-\w{4}){3}-\w{12}?)/]
88
- id = args.first
89
- else
90
- instance = Civo::Instance.all.detect {|i| i.hostname == args.first}
91
- id = instance.id
92
- end
93
- instance = Civo::Instance.upgrade(id: id, size: options.size)
94
- if instance.result == "ok"
95
- puts "Instance '#{args.first}' is being upgraded to #{options.size}."
96
- else
97
- puts "Failed to upgrade that instance: #{instance.inspect}"
98
- end
99
- rescue Flexirest::HTTPUnauthorisedClientException, Flexirest::HTTPForbiddenClientException
100
- puts "Access denied to your default token, ensure it's set correctly with 'civo tokens'"
101
- rescue Flexirest::HTTPNotFoundClientException => e
102
- puts "Couldn't find that account to remove, maybe it's already been removed?"
103
- rescue Flexirest::HTTPServerException => e
104
- puts "Unable to remove #{e.result.reason}"
105
- end
106
- end
107
- end
108
- alias_command "instance:upgrade", "instances:upgrade"
109
- alias_command "instances:resize", "instances:upgrade"
110
- alias_command "instance:resize", "instances:upgrade"
111
-
112
- command "instances:reboot" do |c|
113
- c.description = "Reboot an instance by hostname or id"
114
- c.example "Reboot an instance called 'test.example.com'", 'civo instances:reboot test.example.com'
115
- c.action do |args, options|
116
- begin
117
- if args.first[/(\w{8}(-\w{4}){3}-\w{12}?)/]
118
- id = args.first
119
- else
120
- instance = Civo::Instance.all.detect {|i| i.hostname == args.first}
121
- id = instance.id
122
- end
123
- instance = Civo::Instance.reboot(id: id)
124
- if instance.result == "ok"
125
- puts "Instance '#{args.first}' is being rebooted."
126
- else
127
- puts "Failed to reboot that instance: #{instance.inspect}"
128
- end
129
- rescue Flexirest::HTTPUnauthorisedClientException, Flexirest::HTTPForbiddenClientException
130
- puts "Access denied to your default token, ensure it's set correctly with 'civo tokens'"
131
- rescue Flexirest::HTTPNotFoundClientException => e
132
- puts "Couldn't find that account to remove, maybe it's already been removed?"
133
- rescue Flexirest::HTTPServerException => e
134
- puts "Unable to remove #{e.result.reason}"
135
- end
136
- end
137
- end
138
- alias_command "instance:reboot", "instances:reboot"
139
- alias_command "instances:restart", "instances:reboot"
140
- alias_command "instance:restart", "instances:reboot"
@@ -1,82 +0,0 @@
1
- command "quota" do |c|
2
- c.option "--account STRING", String, "The account to get the quota for"
3
-
4
- c.description = "List the quota for the current account"
5
- c.action do |args, options|
6
- begin
7
- if options.account
8
- quota = Civo::Quota.current(username: options.account)
9
- else
10
- quota = Civo::Quota.current
11
- end
12
- data = {
13
- "Number of instances" => "#{quota.instance_count_limit} (used #{quota.instance_count_usage})",
14
- "Total CPU cores" => "#{quota.cpu_core_limit} (used #{quota.cpu_core_usage})",
15
- "Total RAM" => "#{quota.ram_mb_limit}MB (used #{quota.ram_mb_usage}MB)",
16
- "Total disk space" => "#{quota.disk_gb_limit}GB (used #{quota.disk_gb_usage}GB)",
17
- "Disk volumes" => "#{quota.disk_volume_count_limit} (used #{quota.disk_volume_count_usage})",
18
- "Disk snapshots" => "#{quota.disk_snapshot_count_limit} (used #{quota.disk_snapshot_count_usage})",
19
- "Public IP addresses" => "#{quota.public_ip_address_limit} (used #{quota.public_ip_address_usage})",
20
- "Private subnets" => "#{quota.subnet_count_limit} (used #{quota.subnet_count_usage})",
21
- "Private networks" => "#{quota.network_count_limit} (used #{quota.network_count_usage})",
22
- "Security groups" => "#{quota.security_group_limit} (used #{quota.security_group_usage})",
23
- "Security group rules" => "#{quota.security_group_rule_limit} (used #{quota.security_group_rule_usage})",
24
- "Number of ports (network connections)" => "#{quota.port_count_limit} (used #{quota.port_count_usage})"
25
- }
26
-
27
- Civo::Client.tabulate data, ["Title", "Limit"]
28
-
29
- if Civo::Config.admin?
30
- puts
31
- puts "To set these quota values use:"
32
- puts "civo quota:set --instance-count #{quota.instance_count_limit} --cpu-core #{quota.cpu_core_limit} --ram-mb #{quota.ram_mb_limit} --disk-gb #{quota.disk_gb_limit} \\"
33
- puts " --disk-volume-count #{quota.disk_volume_count_limit} --disk-snapshot-count #{quota.disk_snapshot_count_limit} --public-ip-address #{quota.public_ip_address_limit} \\"
34
- puts " --subnet-count #{quota.subnet_count_limit} --network-count #{quota.network_count_limit} --security-group #{quota.security_group_limit} --security-group-rule #{quota.security_group_rule_limit} \\"
35
- puts " --port-count #{quota.port_count_limit} #{"--account #{options.account}" if options.account}"
36
- end
37
- rescue Flexirest::HTTPUnauthorisedClientException, Flexirest::HTTPForbiddenClientException
38
- puts "Access denied to your default token, ensure it's set correctly with 'civo tokens'"
39
- end
40
- end
41
- end
42
-
43
- command "quota:set" do |c|
44
- c.description = "Update the quotas for the current account (CIVO-INTERNAL-USE ONLY)"
45
- c.option "--account STRING", String, "The account to update the quota for"
46
- c.option "--instance-count INTEGER", Integer, "The limit to the number of instances available"
47
- c.option "--cpu-core INTEGER", Integer, "The limit to the number of CPU cores available"
48
- c.option "--ram-mb INTEGER", Integer, "The limit to the amount of RAM (in MB) available"
49
- c.option "--disk-gb INTEGER", Integer, "The limit to the of disk space (in GB) available"
50
- c.option "--disk-volume-count INTEGER", Integer, "The limit to the number of disk volumes available"
51
- c.option "--disk-snapshot-count INTEGER", Integer, "The limit to the number of disk snapshots available"
52
- c.option "--public-ip-address INTEGER", Integer, "The limit to the number of public IP addresses available"
53
- c.option "--subnet-count INTEGER", Integer, "The limit to the number of subnets available"
54
- c.option "--network-count INTEGER", Integer, "The limit to the number of networks available"
55
- c.option "--security-group INTEGER", Integer, "The limit to the number of security groups available"
56
- c.option "--security-group-rule INTEGER", Integer, "The limit to the number of security group rules available"
57
- c.option "--port-count INTEGER", Integer, "The limit to the number of ports (network connections) available"
58
-
59
- c.action do |args, options|
60
- begin
61
- params = {}
62
- params[:name] = options.account if options.account
63
- params[:instance_count_limit] = options.instance_count if options.instance_count
64
- params[:cpu_core_limit] = options.cpu_core if options.cpu_core
65
- params[:ram_mb_limit] = options.ram_mb if options.ram_mb
66
- params[:disk_gb_limit] = options.disk_gb if options.disk_gb
67
- params[:disk_volume_count_limit] = options.disk_volume_count if options.disk_volume_count
68
- params[:disk_snapshot_count_limit] = options.disk_snapshot_count if options.disk_snapshot_count
69
- params[:public_ip_address_limit] = options.public_ip_address if options.public_ip_address
70
- params[:subnet_count_limit] = options.subnet_count if options.subnet_count
71
- params[:network_count_limit] = options.network_count if options.network_count
72
- params[:security_group_limit] = options.security_group if options.security_group
73
- params[:security_group_rule_limit] = options.security_group_rule if options.security_group_rule
74
- params[:port_count_limit] = options.port_count if options.port_count
75
- puts params.inspect
76
- Civo::Quota.update(params)
77
- puts "Quota updated"
78
- rescue Flexirest::HTTPUnauthorisedClientException, Flexirest::HTTPForbiddenClientException
79
- puts "Access denied to your default token, ensure it's set correctly with 'civo tokens'"
80
- end
81
- end
82
- end
@@ -1,16 +0,0 @@
1
- command "regions" do |c|
2
- c.description = "List available regions"
3
- c.action do |args, options|
4
- begin
5
- regions = Civo::Region.all
6
- puts "Region name"
7
- puts "-" * 72
8
- regions.each do |region|
9
- puts region.name
10
- end
11
- rescue Flexirest::HTTPUnauthorisedClientException, Flexirest::HTTPForbiddenClientException
12
- puts "Access denied to your default token, ensure it's set correctly with 'civo tokens'"
13
- end
14
- end
15
- end
16
- alias_command "region", "regions"
@@ -1,26 +0,0 @@
1
- command "sizes" do |c|
2
- c.description = "List available instance sizes"
3
- c.action do |args, options|
4
- begin
5
- sizes = Civo::Size.all
6
- Civo::Client.tabulate_flexirest sizes, {name: "Size", description: "Description"}
7
- rescue Flexirest::HTTPUnauthorisedClientException, Flexirest::HTTPForbiddenClientException
8
- puts "Access denied to your default token, ensure it's set correctly with 'civo tokens'"
9
- end
10
- end
11
- end
12
- # alias_command "sizes", "size"
13
-
14
- command "sizes:reset" do |c|
15
- c.description = "Reset available instance sizes"
16
- c.action do |args, options|
17
- begin
18
- Civo::Size.reset
19
- puts "Standard sizes reset in Openstack"
20
- rescue Flexirest::HTTPUnauthorisedClientException, Flexirest::HTTPForbiddenClientException
21
- puts "Access denied to your default token, ensure it's set correctly with 'civo tokens'"
22
- end
23
- end
24
- end
25
-
26
- alias_command "size:reset", "sizes:reset"
@@ -1,53 +0,0 @@
1
- command "sshkeys" do |c|
2
- c.description = "List the SSH public keys you've uploaded"
3
- c.action do |args, options|
4
- begin
5
- sshkeys = Civo::SshKey.all
6
- Civo::Client.tabulate_flexirest sshkeys, {name: "Name", label: "SSH Key Label"}
7
- rescue Flexirest::HTTPUnauthorisedClientException, Flexirest::HTTPForbiddenClientException
8
- puts "Access denied to your default token, ensure it's set correctly with 'civo tokens'"
9
- end
10
- end
11
- end
12
- alias_command "sshkey", "sshkeys"
13
-
14
- command "sshkeys:upload" do |c|
15
- c.description = "Upload an SSH public key for installing in to new instances"
16
- c.example "Uploads an SSH public key, calling it 'default' from file '~/.ssh/id_rsa.pub'", 'civo sshkeys:upload default ~/.ssh/id_rsa.pub'
17
- c.action do |args, options|
18
- pub_key = File.read(File.expand_path(args[1]))
19
- begin
20
- Civo::SshKey.create(name: args.first, public_key: pub_key)
21
- puts "SSH key '#{args.first}' uploaded."
22
- rescue Flexirest::HTTPUnauthorisedClientException, Flexirest::HTTPForbiddenClientException
23
- puts "Access denied to your default token, ensure it's set correctly with 'civo tokens'"
24
- end
25
- end
26
- end
27
- alias_command "sshkeys:create", "sshkeys:upload"
28
- alias_command "sshkey:upload", "sshkeys:upload"
29
- alias_command "sshkey:create", "sshkeys:upload"
30
-
31
- command "sshkeys:remove" do |c|
32
- c.description = "Remove an SSH public key from the list you've uploaded"
33
- c.example "Removes an SSH public key called 'testuser'", 'civo sshkeys:remove testuser'
34
- c.action do |args, options|
35
- begin
36
- key = Civo::SshKey.remove(name: args.first)
37
- if key.result == "ok"
38
- puts "SSH public key '#{args.first}' has been removed."
39
- else
40
- puts "Failed to delete that SSH key: #{key.inspect}"
41
- end
42
- rescue Flexirest::HTTPUnauthorisedClientException, Flexirest::HTTPForbiddenClientException
43
- puts "Access denied to your default token, ensure it's set correctly with 'civo tokens'"
44
- rescue Flexirest::HTTPNotFoundClientException => e
45
- puts "Couldn't find that account to remove, maybe it's already been removed?"
46
- rescue Flexirest::HTTPServerException => e
47
- puts "Unable to remove #{e.result.reason}"
48
- end
49
- end
50
- end
51
- alias_command "sshkey:remove", "sshkeys:remove"
52
- alias_command "sshkey:delete", "sshkeys:remove"
53
- alias_command "sshkeys:delete", "sshkeys:remove"
@@ -1,78 +0,0 @@
1
- command "templates" do |c|
2
- c.description = "List available instance templates"
3
- c.action do |args, options|
4
- begin
5
- templates = Civo::Template.all
6
- Civo::Client.tabulate_flexirest templates, {id: "Template", short_description: "Description"}
7
- rescue Flexirest::HTTPUnauthorisedClientException, Flexirest::HTTPForbiddenClientException
8
- puts "Access denied to your default token, ensure it's set correctly with 'civo tokens'"
9
- end
10
- end
11
- end
12
- alias_command "template", "templates"
13
-
14
- if Civo::Config.admin?
15
- command "templates:create" do |c|
16
- c.description = "Create a template (the ID should be all lower-case, hyphens and full stops)"
17
- c.option "--name STRING", String, "The name of the template"
18
- c.option "--image-id STRING", String, "The Openstack Image ID"
19
- c.option "--short-description STRING", String, "A short (one-line) description of this template"
20
- c.option "--description STRING", String, "A longer (Markdown format) description of this template"
21
- c.option "--cloud-init-file STRING", String, "The filename of a cloud init file"
22
- c.example "Creates a template with the ID 'ubuntu-apache' with a cloud init file called 'my-cloud-config'", 'civo template:create ubuntu-apache --image-id 12345-67890-12345 --cloud-init-file=my-cloud-config'
23
- c.action do |args, options|
24
- params = {
25
- id: args[0]
26
- }
27
- params[:name] = options.name if options.name
28
- params[:image_id] = options.image_id if options.image_id
29
- params[:short_description] = options.short_description if options.short_description
30
- params[:description] = options.description if options.description
31
- if options.cloud_init_file
32
- cloud_init_file = File.expand_path(options.cloud_init_file)
33
- params[:cloud_config] = File.read(cloud_init_file) if File.exist?(cloud_init_file)
34
- end
35
- begin
36
- Civo::Template.create(params)
37
- puts "Template '#{args.first}' updated."
38
- rescue Flexirest::HTTPUnauthorisedClientException, Flexirest::HTTPForbiddenClientException
39
- puts "Access denied to your default token, ensure it's set correctly with 'civo tokens'"
40
- end
41
- end
42
- end
43
- alias_command "template:create", "templates:create"
44
- alias_command "template:new", "templates:create"
45
- alias_command "templates:new", "templates:create"
46
-
47
- command "templates:update" do |c|
48
- c.description = "Update a template"
49
- c.option "--name STRING", String, "The name of the template"
50
- c.option "--image-id STRING", String, "The Openstack Image ID"
51
- c.option "--short-description STRING", String, "A short (one-line) description of this template"
52
- c.option "--description STRING", String, "A longer (Markdown format) description of this template"
53
- c.option "--cloud-init-file STRING", String, "The filename of a cloud init file"
54
- c.example "Updates a template with the ID 'ubuntu-apache' with a cloud init file called 'my-cloud-config'", 'civo template:update ubuntu-apache --cloud-init-file=my-cloud-config'
55
- c.action do |args, options|
56
- params = {
57
- id: args[0]
58
- }
59
- params[:name] = options.name if options.name
60
- params[:image_id] = options.image_id if options.image_id
61
- params[:short_description] = options.short_description if options.short_description
62
- params[:description] = options.description if options.description
63
- if options.cloud_init_file
64
- cloud_init_file = File.expand_path(options.cloud_init_file)
65
- params[:cloud_config] = File.read(cloud_init_file) if File.exist?(cloud_init_file)
66
- end
67
- begin
68
- Civo::Template.save(params)
69
- puts "Template '#{args.first}' updated."
70
- rescue Flexirest::HTTPUnauthorisedClientException, Flexirest::HTTPForbiddenClientException
71
- puts "Access denied to your default token, ensure it's set correctly with 'civo tokens'"
72
- end
73
- end
74
- end
75
- alias_command "template:update", "templates:update"
76
- alias_command "template:save", "templates:update"
77
- alias_command "templates:save", "templates:update"
78
- end
@@ -1,41 +0,0 @@
1
- command "tokens" do |c|
2
- c.description = "List the tokens you have saved"
3
- c.action do |args, options|
4
- tokens = Civo::Token.read_all
5
- if tokens.keys.size > 0
6
- Civo::Client.tabulate tokens, ["Name", "API Key"]
7
- else
8
- puts "No tokens found, please set one using tokens:save"
9
- end
10
- end
11
- end
12
- alias_command "token", "tokens"
13
-
14
- command "tokens:save" do |c|
15
- c.description = "Save an API token supplied by Civo.com"
16
- c.example "Saves a token called 'master' with API key 'key_goes_here'", 'civo tokens:save master key_goes_here'
17
- c.action do |args, options|
18
- Civo::Token.save(args[0], args[1])
19
- end
20
- end
21
- alias_command "token:save", "tokens:save"
22
-
23
- command "tokens:default" do |c|
24
- c.description = "Set the default token from the list you have saved"
25
- c.example "Sets the default token to 'master'", 'civo tokens:default master'
26
- c.action do |args, options|
27
- Civo::Token.set_default(args[0])
28
- end
29
- end
30
- alias_command "tokens:use", "tokens:default"
31
- alias_command "token:use", "tokens:default"
32
- alias_command "token:default", "tokens:default"
33
-
34
- command "tokens:remove" do |c|
35
- c.description = "Remove a token from the list you have saved"
36
- c.example "Removes the token 'master'", 'civo tokens:remove master'
37
- c.action do |args, options|
38
- Civo::Token.remove(args[0])
39
- end
40
- end
41
- alias_command "token:remove", "tokens:remove"
@@ -1,53 +0,0 @@
1
- module Civo
2
- class Config
3
- FILENAME = "#{ENV["HOME"]}/.civorc"
4
-
5
- def self.header_line
6
- "# This file is managed by 'civo'\n"
7
- end
8
-
9
- def self.ensure_file_exists!
10
- unless File.exists?(FILENAME)
11
- update({meta: {version: "1", url: "https://api.civo.com"}}).save
12
- FileUtils.chmod(0600, FILENAME)
13
- end
14
-
15
- unless File.exists?(FILENAME)
16
- puts "#{FILENAME} doesn't exist and couldn't be created"
17
- exit 1
18
- end
19
-
20
- unless ("%o" % File.stat(FILENAME).mode).to_s[/600$/]
21
- puts "The permissions on #{FILENAME} aren't 0600 (#{ ("%o" % File.stat(FILENAME).mode).to_s}), they must be for security reasons"
22
- exit 2
23
- end
24
- end
25
-
26
- def self.parse
27
- ensure_file_exists!
28
-
29
- @config = ::TOML.load_file(FILENAME)
30
- end
31
-
32
- def self.api_url
33
- parse["meta"]["url"]
34
- end
35
-
36
- def self.admin?
37
- parse["meta"]["admin"] == "true"
38
- end
39
-
40
- def self.update(config)
41
- @config = config
42
- self
43
- end
44
-
45
- def self.save
46
- File.open(FILENAME, "w") do |f|
47
- f << header_line
48
- f << TOML::Generator.new(@config).body
49
- end
50
- end
51
-
52
- end
53
- end
@@ -1,53 +0,0 @@
1
- module Civo
2
- class Token
3
-
4
- def self.read_all
5
- config = Civo::Config.parse
6
- config["tokens"] || {}
7
- end
8
-
9
- def self.write_all(tokens)
10
- config = Civo::Config.parse
11
- config["tokens"] = tokens
12
- Civo::Config.update(config).save
13
- end
14
-
15
- def self.save(name, key)
16
- tokens = read_all
17
- tokens[name] = key
18
- if tokens["**DEFAULT**"] == nil
19
- tokens["**DEFAULT**"] = name
20
- end
21
- write_all(tokens)
22
- end
23
-
24
- def self.set_default(name)
25
- puts "Setting default token to be #{name}"
26
- tokens = read_all
27
- tokens["**DEFAULT**"] = name
28
- write_all(tokens)
29
- end
30
-
31
- def self.remove(name)
32
- tokens = read_all
33
- tokens.delete(name)
34
- if tokens["**DEFAULT**"] == name
35
- tokens["**DEFAULT**"] = tokens.keys.first
36
- if tokens["**DEFAULT**"] == "**DEFAULT**"
37
- tokens.delete("**DEFAULT**")
38
- end
39
- end
40
- write_all(tokens)
41
- end
42
-
43
- def self.default
44
- tokens = read_all
45
- token = tokens[tokens["**DEFAULT**"]]
46
- if token.nil?
47
- puts "No default token has been set. Use 'civo tokens:save --name NAME --token TOKEN' to set one"
48
- exit 2
49
- end
50
- token
51
- end
52
- end
53
- end