vcli 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Rakefile +10 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/bin/vcli +4 -0
- data/lib/vcli.rb +61 -0
- data/lib/vcli/cli.rb +37 -0
- data/lib/vcli/cli/abiquo.rb +1 -0
- data/lib/vcli/cli/resource.rb +18 -0
- data/lib/vcli/cli/show.rb +112 -0
- data/lib/vcli/version.rb +3 -0
- data/test/test_helper.rb +4 -0
- data/test/vcli_test.rb +11 -0
- metadata +172 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 22a270ef67bcde8b555c88c42188261bbe332945
|
4
|
+
data.tar.gz: c5995cf83bdbc697a2431f111f1e7dc8f3a4beb0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e6d5635da49bd1aa5c7e84b3b2b3fa6d46a29e585fdaa67d31e01460044885c0985a07400a8f82b56a1b645498dafdb4d6a919a1e480c568f7f72922a8ef5ecc
|
7
|
+
data.tar.gz: 2cbf7eca73f081b4698e3a87776bea58a7994608e41a0602a04cdee7a25af25acf2d5e7ef3dfe5baba1d38ac647b4d69ff9bf0dc03674decc4033ebb2a35d276
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "vcli"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
data/bin/vcli
ADDED
data/lib/vcli.rb
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
require "vcli/version"
|
2
|
+
require "vcli/cli"
|
3
|
+
require "yaml"
|
4
|
+
|
5
|
+
module Vcli
|
6
|
+
|
7
|
+
# Set Config directory and file
|
8
|
+
CONFIG_DIR = "#{ENV['HOME']}/.vcli/"
|
9
|
+
CONFIG_FILE = CONFIG_DIR + "vcli.yml"
|
10
|
+
|
11
|
+
attr_reader :target
|
12
|
+
attr_reader :user
|
13
|
+
attr_reader :password
|
14
|
+
|
15
|
+
def self.set_config(key, value)
|
16
|
+
# Read in YAML file
|
17
|
+
config = YAML::load(File.read(CONFIG_FILE)) || {}
|
18
|
+
# change to new value
|
19
|
+
config[key.to_sym] = value
|
20
|
+
# Write it back out to the YAML file
|
21
|
+
open(CONFIG_FILE, 'w') { |f| YAML::dump(config, f) }
|
22
|
+
# ReRead the configuration file
|
23
|
+
readconfig
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.readconfig
|
27
|
+
# read in yaml file and store as instance variables
|
28
|
+
config = YAML.load_file(CONFIG_FILE)
|
29
|
+
config.each { |key, value|
|
30
|
+
instance_variable_set("@#{key}", value) }
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.create_file
|
34
|
+
# create file
|
35
|
+
f = File.open(CONFIG_FILE, 'w')
|
36
|
+
f.write("")
|
37
|
+
# set some default null values
|
38
|
+
set_config("target","")
|
39
|
+
set_config("user","")
|
40
|
+
set_config("password","")
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.create_dir
|
44
|
+
# create directory
|
45
|
+
Dir::mkdir CONFIG_DIR
|
46
|
+
end
|
47
|
+
|
48
|
+
unless File.directory? CONFIG_DIR
|
49
|
+
# if configuration directory does not exist then create it
|
50
|
+
create_dir
|
51
|
+
end
|
52
|
+
|
53
|
+
unless File.file? CONFIG_FILE
|
54
|
+
#if yaml file does not exist then create it
|
55
|
+
create_file
|
56
|
+
end
|
57
|
+
|
58
|
+
#Read in YAML file into instance variables
|
59
|
+
readconfig
|
60
|
+
|
61
|
+
end
|
data/lib/vcli/cli.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require 'vcli/cli/show'
|
3
|
+
require 'vcli/cli/resource'
|
4
|
+
require 'abiquo-api'
|
5
|
+
include Vcli
|
6
|
+
|
7
|
+
module Vcli
|
8
|
+
class Cli < Thor
|
9
|
+
desc "target URL", "Set the target of the CLI to URL"
|
10
|
+
def target(url)
|
11
|
+
Vcli.set_config("target",url)
|
12
|
+
command = "Set target of cli to #{url}"
|
13
|
+
puts command
|
14
|
+
end
|
15
|
+
|
16
|
+
desc "login", "Login to the Abiquo VDC with stored details"
|
17
|
+
def login()
|
18
|
+
abq = AbiquoAPI.new(:abiquo_api_url => Vcli::target,
|
19
|
+
:abiquo_username => Vcli::user,
|
20
|
+
:abiquo_password => Vcli::password)
|
21
|
+
abq.user
|
22
|
+
enterprise=abq.user.link(:enterprise).get
|
23
|
+
puts "Logged into Abiquo Portal as User - #{abq.user.id} - #{abq.user.name} #{abq.user.surname}"
|
24
|
+
puts " in Enterprise - #{enterprise.id} - #{abq.enterprise.title}"
|
25
|
+
end
|
26
|
+
|
27
|
+
desc "user username password", "Set user details for accessing the Abiquo VDC"
|
28
|
+
def user(username, password)
|
29
|
+
Vcli.set_config("user",username)
|
30
|
+
Vcli.set_config("password",password)
|
31
|
+
puts "Set user details complete"
|
32
|
+
end
|
33
|
+
|
34
|
+
desc "show COMMANDS", "Show items within the Abiquo VDC"
|
35
|
+
subcommand "show", Vcli::CLI::Show
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
abiquo = lambda {AbiquoAPI.new(:abiquo_api_url => Vcli::target, :abiquo_username => Vcli::user, :abiquo_password => Vcli::password)}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Vcli
|
2
|
+
module CLI
|
3
|
+
module SHOW
|
4
|
+
class Resource < Thor
|
5
|
+
desc "limits", "Show limits"
|
6
|
+
def limits( )
|
7
|
+
command = "showing limits"
|
8
|
+
puts command
|
9
|
+
end
|
10
|
+
desc "usage", "Show usage"
|
11
|
+
def usage( )
|
12
|
+
command = "showing usage"
|
13
|
+
puts command
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,112 @@
|
|
1
|
+
############################################################################
|
2
|
+
#
|
3
|
+
# VCLI::CLI::Show
|
4
|
+
#
|
5
|
+
############################################################################
|
6
|
+
# Jay Fearn
|
7
|
+
############################################################################
|
8
|
+
# Very Messy needs to be refactored to create classes for each object type
|
9
|
+
# like datacenters, virtualappliances, enterprises, virtual machines, etc
|
10
|
+
############################################################################
|
11
|
+
# DATE # Ver # Description
|
12
|
+
############################################################################
|
13
|
+
# 16072015 # 0.1 # Initial Creation
|
14
|
+
############################################################################
|
15
|
+
|
16
|
+
module Vcli
|
17
|
+
module CLI
|
18
|
+
class Show < Thor
|
19
|
+
|
20
|
+
# Data Centers
|
21
|
+
desc "datacenters", "Show all datacenters"
|
22
|
+
def datacenters( )
|
23
|
+
abq = AbiquoAPI.new(:abiquo_api_url => Vcli::target, :abiquo_username => Vcli::user, :abiquo_password => Vcli::password)
|
24
|
+
link=AbiquoAPI::Link.new(:href => 'api/admin/datacenters' , :type => 'application/vnd.abiquo.datacenters+json')
|
25
|
+
dc=abq.list(link)
|
26
|
+
dc.each { |l|
|
27
|
+
puts "#{l.name} \t - #{l.id} \t - #{l.location}"
|
28
|
+
}
|
29
|
+
end
|
30
|
+
|
31
|
+
# Virtual Appliances
|
32
|
+
desc "virtualappliances", "Show all virtualappliances"
|
33
|
+
method_option :vdc, :type => :string
|
34
|
+
def virtualappliances( )
|
35
|
+
abq = AbiquoAPI.new(:abiquo_api_url => Vcli::target, :abiquo_username => Vcli::user, :abiquo_password => Vcli::password)
|
36
|
+
# Get something on the screen
|
37
|
+
puts "VDC,Appliance ID,Appliance Name"
|
38
|
+
# If --vdc parameter passed
|
39
|
+
vdc=options[:vdc].to_s
|
40
|
+
if vdc.length != 0
|
41
|
+
link2=AbiquoAPI::Link.new(:href => 'api/cloud/virtualdatacenters/' + vdc + '/virtualappliances' , :type => 'application/vnd.abiquo.virtualappliances+json')
|
42
|
+
va=abq.list(link2)
|
43
|
+
va.each { |l|
|
44
|
+
puts "#{vdc},#{l.name},#{l.id}"
|
45
|
+
}
|
46
|
+
# If no --vdc parameter passwd
|
47
|
+
else
|
48
|
+
# Cycle through all virtualdatacenters
|
49
|
+
link=AbiquoAPI::Link.new(:href => 'api/cloud/virtualdatacenters',
|
50
|
+
:type => 'application/vnd.abiquo.virtualdatacenters+json')
|
51
|
+
vdc=abq.list(link)
|
52
|
+
# Cycle through all virtual appliances in virtual datacenter
|
53
|
+
vdc.each { |l|
|
54
|
+
link2=AbiquoAPI::Link.new(:href => 'api/cloud/virtualdatacenters/' + l.id.to_s + '/virtualappliances' , :type => 'application/vnd.abiquo.virtualappliances+json')
|
55
|
+
dc=abq.list(link2)
|
56
|
+
dc.each { |m|
|
57
|
+
puts "#{l.id},#{m.id},#{m.name}"
|
58
|
+
}
|
59
|
+
}
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
# Users
|
64
|
+
desc "users", "Show all users within your account"
|
65
|
+
def users( )
|
66
|
+
command = "showing all users"
|
67
|
+
puts command
|
68
|
+
end
|
69
|
+
|
70
|
+
# Enterprise
|
71
|
+
desc "enterprise", "Show Enterprise details"
|
72
|
+
def enterprise( )
|
73
|
+
abq = AbiquoAPI.new(:abiquo_api_url => Vcli::target, :abiquo_username => Vcli::user, :abiquo_password => Vcli::password)
|
74
|
+
link=AbiquoAPI::Link.new(:href => 'api/admin/enterprises',
|
75
|
+
:type => 'application/vnd.abiquo.enterprises+json')
|
76
|
+
dc=abq.list(link)
|
77
|
+
dc.each { |l|
|
78
|
+
puts "#{l.id} \t - #{l.name}"
|
79
|
+
}
|
80
|
+
end
|
81
|
+
|
82
|
+
# Resources
|
83
|
+
desc "resources", "Show resources usage details"
|
84
|
+
def resources( )
|
85
|
+
command = "showing resources details"
|
86
|
+
puts command
|
87
|
+
end
|
88
|
+
|
89
|
+
# Resource Limits
|
90
|
+
#
|
91
|
+
desc "limits", "Show limit details"
|
92
|
+
def limits( )
|
93
|
+
command = "showing limit details"
|
94
|
+
puts command
|
95
|
+
end
|
96
|
+
|
97
|
+
# Virtual Datacenters
|
98
|
+
desc "virtualdatacenters", "show configured Virtual Data Centers"
|
99
|
+
def virtualdatacenters( )
|
100
|
+
abq = AbiquoAPI.new(:abiquo_api_url => Vcli::target,
|
101
|
+
:abiquo_username => Vcli::user,
|
102
|
+
:abiquo_password => Vcli::password)
|
103
|
+
link=AbiquoAPI::Link.new(:href => 'api/cloud/virtualdatacenters',
|
104
|
+
:type => 'application/vnd.abiquo.virtualdatacenters+json')
|
105
|
+
vdc=abq.list(link)
|
106
|
+
vdc.each { |l|
|
107
|
+
puts "#{l.id} \t - #{l.name}"
|
108
|
+
}
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
data/lib/vcli/version.rb
ADDED
data/test/test_helper.rb
ADDED
data/test/vcli_test.rb
ADDED
metadata
ADDED
@@ -0,0 +1,172 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: vcli
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.4
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jay Fearn
|
8
|
+
autorequire:
|
9
|
+
bindir:
|
10
|
+
- bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2015-07-16 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ~>
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '1.10'
|
21
|
+
type: :development
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ~>
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '1.10'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: rake
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ~>
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '10.0'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ~>
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '10.0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: minitest
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ~>
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '5'
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ~>
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '5'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: multi_xml
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - '='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 0.5.5
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - '='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 0.5.5
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: thor
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ~>
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :runtime
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ~>
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: httparty
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ~>
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
type: :runtime
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ~>
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: json
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - '='
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: 1.8.3
|
105
|
+
type: :runtime
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - '='
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: 1.8.3
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
name: abiquo-api
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ~>
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
type: :runtime
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ~>
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
description: Command Line Interface for the Abiquo API
|
127
|
+
email:
|
128
|
+
- jay@jayfearn.com
|
129
|
+
executables:
|
130
|
+
- setup
|
131
|
+
- vcli
|
132
|
+
- console
|
133
|
+
extensions: []
|
134
|
+
extra_rdoc_files: []
|
135
|
+
files:
|
136
|
+
- Rakefile
|
137
|
+
- bin/setup
|
138
|
+
- bin/vcli
|
139
|
+
- bin/console
|
140
|
+
- lib/vcli/cli/abiquo.rb
|
141
|
+
- lib/vcli/cli/show.rb
|
142
|
+
- lib/vcli/cli/resource.rb
|
143
|
+
- lib/vcli/version.rb
|
144
|
+
- lib/vcli/cli.rb
|
145
|
+
- lib/vcli.rb
|
146
|
+
- test/test_helper.rb
|
147
|
+
- test/vcli_test.rb
|
148
|
+
homepage: http://www.sittingonthe.net
|
149
|
+
licenses:
|
150
|
+
- MIT
|
151
|
+
metadata: {}
|
152
|
+
post_install_message:
|
153
|
+
rdoc_options: []
|
154
|
+
require_paths:
|
155
|
+
- lib
|
156
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
157
|
+
requirements:
|
158
|
+
- - '>='
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
version: '0'
|
161
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
162
|
+
requirements:
|
163
|
+
- - '>='
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: '0'
|
166
|
+
requirements: []
|
167
|
+
rubyforge_project:
|
168
|
+
rubygems_version: 2.0.14
|
169
|
+
signing_key:
|
170
|
+
specification_version: 4
|
171
|
+
summary: Command Line Interface for the Abiquo API
|
172
|
+
test_files: []
|