maas-client 0.1.20

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8f6b2067dd942c2a3d37a05a453990176d6a6256
4
+ data.tar.gz: 61bbb39c401576984d0d1b6a4ac5104c6e3e46c8
5
+ SHA512:
6
+ metadata.gz: fb22fb8402d45900895ccc3ccd8a62186c55a45fdd66e437c19c6a7d7b48d1393953c43267d2c8915a9a9b60b425386e81df08e31011f91107ca0dc859eb1926
7
+ data.tar.gz: 2f3b79ea2a36beb4a08aaa339d4056964c05264eac986baf6213678805cfb0c0c96ef04f6b6c59e8c8eb58488f5df23edead0a2363d0b4fee493d2f2f0ab9f41
data/.gitignore ADDED
@@ -0,0 +1,12 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /Gemfile.locked
5
+ /_yardoc/
6
+ /coverage/
7
+ /doc/
8
+ /pkg/
9
+ /spec/reports/
10
+ /tmp/
11
+ *.gem
12
+ /.idea/
data/.rspec ADDED
@@ -0,0 +1,4 @@
1
+ --color
2
+ #--require fivemat
3
+ #--format Fivemat
4
+ --format documentation
data/.rubocop.yml ADDED
@@ -0,0 +1,12 @@
1
+ Metrics/MethodLength:
2
+ Max: 34
3
+
4
+ Metrics/AbcSize:
5
+ Max: 20
6
+
7
+ Metrics/CyclomaticComplexity:
8
+ Max: 8
9
+
10
+ Metrics/BlockLength:
11
+ Max: 80
12
+
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ maas-client
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.3.1
@@ -0,0 +1,74 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ In the interest of fostering an open and welcoming environment, we as
6
+ contributors and maintainers pledge to making participation in our project and
7
+ our community a harassment-free experience for everyone, regardless of age, body
8
+ size, disability, ethnicity, gender identity and expression, level of experience,
9
+ nationality, personal appearance, race, religion, or sexual identity and
10
+ orientation.
11
+
12
+ ## Our Standards
13
+
14
+ Examples of behavior that contributes to creating a positive environment
15
+ include:
16
+
17
+ * Using welcoming and inclusive language
18
+ * Being respectful of differing viewpoints and experiences
19
+ * Gracefully accepting constructive criticism
20
+ * Focusing on what is best for the community
21
+ * Showing empathy towards other community members
22
+
23
+ Examples of unacceptable behavior by participants include:
24
+
25
+ * The use of sexualized language or imagery and unwelcome sexual attention or
26
+ advances
27
+ * Trolling, insulting/derogatory comments, and personal or political attacks
28
+ * Public or private harassment
29
+ * Publishing others' private information, such as a physical or electronic
30
+ address, without explicit permission
31
+ * Other conduct which could reasonably be considered inappropriate in a
32
+ professional setting
33
+
34
+ ## Our Responsibilities
35
+
36
+ Project maintainers are responsible for clarifying the standards of acceptable
37
+ behavior and are expected to take appropriate and fair corrective action in
38
+ response to any instances of unacceptable behavior.
39
+
40
+ Project maintainers have the right and responsibility to remove, edit, or
41
+ reject comments, commits, code, wiki edits, issues, and other contributions
42
+ that are not aligned to this Code of Conduct, or to ban temporarily or
43
+ permanently any contributor for other behaviors that they deem inappropriate,
44
+ threatening, offensive, or harmful.
45
+
46
+ ## Scope
47
+
48
+ This Code of Conduct applies both within project spaces and in public spaces
49
+ when an individual is representing the project or its community. Examples of
50
+ representing a project or community include using an official project e-mail
51
+ address, posting via an official social media account, or acting as an appointed
52
+ representative at an online or offline event. Representation of a project may be
53
+ further defined and clarified by project maintainers.
54
+
55
+ ## Enforcement
56
+
57
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
+ reported by contacting the project team at TODO: Write your email address. All
59
+ complaints will be reviewed and investigated and will result in a response that
60
+ is deemed necessary and appropriate to the circumstances. The project team is
61
+ obligated to maintain confidentiality with regard to the reporter of an incident.
62
+ Further details of specific enforcement policies may be posted separately.
63
+
64
+ Project maintainers who do not follow or enforce the Code of Conduct in good
65
+ faith may face temporary or permanent repercussions as determined by other
66
+ members of the project's leadership.
67
+
68
+ ## Attribution
69
+
70
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
+ available at [http://contributor-covenant.org/version/1/4][version]
72
+
73
+ [homepage]: http://contributor-covenant.org
74
+ [version]: http://contributor-covenant.org/version/1/4/
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+ source 'https://rubygems.org'
3
+
4
+ # Specify your gem's dependencies in maas-client.gemspec
5
+ gemspec
6
+
7
+ gem 'pry'
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2017 TODO: Don Draper
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,175 @@
1
+ # Maas::Client
2
+
3
+ This is a simple client library for MAAS, Metal as a Service, written in Ruby.
4
+
5
+ ## Installation
6
+
7
+ ```ruby
8
+
9
+ $ bundle
10
+
11
+ # Or install it yourself as:
12
+
13
+ $ gem install maas-client --no-ri --no-rdoc
14
+
15
+ ```
16
+
17
+ ## Usage
18
+
19
+ ```ruby
20
+
21
+ require "maas/client"
22
+
23
+ con = Maas::Client::MaasClient.new("#{CONSUMER_KEY}:#{KEY}:#{SECRET}",
24
+ "http://#{IP_OR_DOMAIN_NAME}/MAAS/api/2.0")
25
+
26
+
27
+ con.request(:get, ['users'])
28
+
29
+ con.request(:get, ['users'], {'op' => 'whoami'})
30
+
31
+ con.request(:post, ['users'], {'username' => 'someone1',
32
+ 'email' => 'someone1@example.com',
33
+ 'password' => 'maasuser1',
34
+ 'is_superuser' => 1})
35
+
36
+ con.request(:get, ['account'], {'op' => 'list_authorisation_tokens'})
37
+
38
+ con.request(:post, ['account'], {'op' => 'create_authorisation_token', 'name' => 'mynewkey1'})
39
+
40
+ con.request(:post, ['account'], {'op' => 'delete_authorisation_token', 'token_key' => KEY})
41
+
42
+ con.request(:get, ['dnsresources'])
43
+
44
+ con.request(:get, ['ipaddresses'])
45
+
46
+ myarr = []
47
+ dns_records = con.request(:get, ['dnsresources'])
48
+ dns_records.each_with_index { |item, index| myarr << item['fqdn'] }
49
+ myarr
50
+
51
+
52
+ ```
53
+
54
+ ## Development and Contribution
55
+
56
+ Questions and pull requests are always welcome!
57
+
58
+ Source Repository
59
+ https://github.com/itisnotdone/maas-client
60
+
61
+ Gem Location
62
+ https://rubygems.org/gems/maas-client
63
+
64
+ Issues and questions
65
+ https://github.com/itisnotdone/maas-client/issues
66
+
67
+ ### To begin contribution
68
+
69
+ ```bash
70
+
71
+ # Install RVM.
72
+ # https://rvm.io/rvm/install
73
+ $ echo progress-bar >> ~/.curlrc && curl -sSL https://get.rvm.io | bash
74
+
75
+ # It depends on your development environment. See following thread if it does not work.
76
+ # https://askubuntu.com/questions/121073/why-bash-profile-is-not-getting-sourced-when-opening-a-terminal
77
+ $ source ~/.bash_profile
78
+
79
+ # Download source.
80
+ $ git clone https://github.com/itisnotdone/maas-client.git
81
+
82
+ # This should install and create the ruby version and gemset specified at .ruby-version and .ruby-gemset.
83
+ $ cd maas-client
84
+
85
+ $ bundle
86
+
87
+ ```
88
+
89
+ ### To run simple tests with mocks
90
+
91
+ ```bash
92
+
93
+ $ rspec
94
+
95
+ Maas::Client::MaasClient
96
+ basic
97
+ has a version number
98
+ has an access token
99
+ can report for wrong requests
100
+ user list
101
+ returns an array
102
+ has user information
103
+ user management
104
+ can create a new user
105
+ can delete a user
106
+
107
+ Finished in 0.01254 seconds (files took 0.17329 seconds to load)
108
+ 7 examples, 0 failures
109
+
110
+ Coverage report generated for RSpec to /home/deploy/maas-client/coverage. 17 / 25 LOC (68.0%) covered.
111
+
112
+ ```
113
+
114
+ ### To run simple tests with real world
115
+
116
+ ```bash
117
+ $ API_KEY='API_KEY' MAAS_SERVER='IP_OR_DOMAIN' rspec
118
+
119
+ # if you want to see the report with Fivemat format
120
+ $ FIVEMAT_PROFILE=1; API_KEY='API_KEY' MAAS_SERVER='IP_OR_DOMAIN' bundle exec rspec
121
+
122
+ Maas::Client::MaasClient
123
+ basic
124
+ has a version number
125
+ has an access token
126
+ can report for wrong requests
127
+ user list
128
+ is an array
129
+ has user information
130
+ user management
131
+ can create a new user
132
+ can delete a user
133
+
134
+ Finished in 0.30954 seconds (files took 0.17286 seconds to load)
135
+ 7 examples, 0 failures
136
+
137
+ Coverage report generated for RSpec to /home/deploy/maas-client/coverage. 25 / 25 LOC (100.0%) covered.
138
+ ```
139
+
140
+ ### To release
141
+
142
+ ```bash
143
+ vi lib/maas/client/version.rb
144
+ # and increase release number.
145
+
146
+ $ git add $things
147
+
148
+ $ git commit -m 'blahblah'
149
+
150
+ $ rake release
151
+
152
+ rake release --trace
153
+ ** Invoke release (first_time)
154
+ ** Invoke build (first_time)
155
+ ** Execute build
156
+ maas-client x.x.xx built to pkg/maas-client-x.x.xx.gem.
157
+ ** Invoke release:guard_clean (first_time)
158
+ ** Execute release:guard_clean
159
+ ** Invoke release:source_control_push (first_time)
160
+ ** Execute release:source_control_push
161
+ Tagged vx.x.xx.
162
+ Username for 'https://github.com': $id
163
+ Password for 'https://id@github.com':
164
+ Pushed git commits and tags.
165
+ ** Invoke release:rubygem_push (first_time)
166
+ ** Execute release:rubygem_push
167
+ Pushed maas-client x.x.xx to rubygems.org.
168
+ ** Execute release
169
+
170
+ ```
171
+
172
+ ## License
173
+
174
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
175
+
data/Rakefile ADDED
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+ require 'bundler/gem_tasks'
3
+ require 'cane/rake_task'
4
+ require 'rubocop/rake_task'
5
+
6
+ Cane::RakeTask.new(:cane) do |cane|
7
+ cane.no_style = true
8
+ end
9
+
10
+ RuboCop::RakeTask.new(:rubocop) do |rubocop|
11
+ rubocop.options = [
12
+ '-c.rubocop.yml',
13
+ '--display-cop-names'
14
+ ]
15
+ end
16
+
17
+ task default: [:cane, :rubocop]
@@ -0,0 +1,4 @@
1
+ #!/bin/bash
2
+
3
+ git config --global user.name "Don Draper"
4
+ git config --global user.email "donoldfashioned@gmail.com"
data/bin/push ADDED
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+ #!/usr/bin/env ruby
3
+
4
+ require_relative '../lib/maas/client/version.rb'
5
+
6
+ # When to push manually
7
+ system("gem push pkg/maas-client-#{Maas::Client::VERSION}.gem")
8
+ system('gem list -r maas-client')
data/bin/rbmaas ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ Signal.trap("INT") { exit 1 }
4
+
5
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), %w{.. lib})
6
+
7
+ require "rubygems"
8
+ require "maas/client/cli"
9
+
10
+ Maas::Client::CLI.start(ARGV)
11
+
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+ require 'oauth'
3
+ require 'oauth/signature/plaintext'
4
+ require 'json'
5
+
6
+ module Maas
7
+ module Client
8
+ # A class that can be used to call MAAS API.
9
+ class MaasClient
10
+ attr_reader :access_token
11
+
12
+ def initialize(api_key, endpoint)
13
+ @api_key = api_key
14
+ @consumer_key = @api_key.split(/:/)[0]
15
+ @key = @api_key.split(/:/)[1]
16
+ @secret = @api_key.split(/:/)[2]
17
+ @endpoint = endpoint
18
+ consumer = OAuth::Consumer.new(
19
+ @consumer_key,
20
+ '',
21
+ realm: '',
22
+ site: @endpoint,
23
+ scheme: :header,
24
+ signature_method: 'PLAINTEXT'
25
+ )
26
+ @access_token = OAuth::AccessToken.new(
27
+ consumer,
28
+ @key,
29
+ @secret
30
+ )
31
+ end
32
+
33
+ def request(method, subject, param = nil)
34
+ default_param = {
35
+ 'Accept' => 'application/json',
36
+ 'Content-Type' => 'multipart/form-data'
37
+ }
38
+ uri = '/' + subject.join('/') + '/'
39
+ arguments = [method, uri, param, default_param].compact
40
+ response = access_token.request(*arguments)
41
+
42
+ return JSON.parse(response.body) if response.code == '200'
43
+
44
+ if response.code == '204'
45
+ puts 'No Content'
46
+ else
47
+ raise "#{response.class} #{response.code} \
48
+ #{response.message} #{response.body}"
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,101 @@
1
+ require 'thor'
2
+ require 'maas/client'
3
+ require 'maas/client/util'
4
+ require 'pry'
5
+ require 'yaml'
6
+
7
+ module Maas
8
+ module Client
9
+ class CLI < Thor
10
+ package_name 'maas-client'
11
+ # DO NOT DUPLICATE EXISTING 'maas' COMMAND.
12
+ include Maas::Client::Util
13
+
14
+ attr_reader :conn
15
+
16
+ def initialize(*args)
17
+ super
18
+ @conn = init_rbmaas
19
+ end
20
+
21
+ no_commands do
22
+ def init_rbmaas
23
+ user_rbmaas_home = Dir.home + '/.rbmaas'
24
+ maas_config = {}
25
+ maas_config[:user_rbmaas_home] = user_rbmaas_home
26
+ if not File.directory?(user_rbmaas_home)
27
+ puts 'Creating home directory..'
28
+ FileUtils.mkdir(user_rbmaas_home)
29
+ end
30
+
31
+ lib_dir = Gem::Specification.find_by_name("maas-client").gem_dir
32
+ maas_config[:lib_dir] = lib_dir
33
+ conf_file = user_rbmaas_home + '/rbmaas.yml'
34
+ if not File.exists?(conf_file)
35
+ src = File.new(lib_dir + '/lib/maas/client/template/rbmaas.yml')
36
+ dst = Dir.new(user_rbmaas_home)
37
+ puts 'Copying sample rbmaas.yml..'
38
+ FileUtils.cp(src, dst)
39
+ abort("Please define default configuration for rbmaas at #{conf_file}")
40
+ end
41
+
42
+ maas_config.merge!(symbolize_keys(YAML.load_file(conf_file)))
43
+ conn = Maas::Client::MaasClient.new(
44
+ maas_config[:maas][:key],
45
+ maas_config[:maas][:url]
46
+ )
47
+ end
48
+ end
49
+
50
+ desc 'clear', "Clear unused resources."
51
+ def clear(resource)
52
+ case resource
53
+ when 'dns'
54
+ domains = []
55
+ conn.request(:get, ['dnsresources']).each do |d|
56
+ if d['ip_addresses'] == [] or d['ip_addresses'][0]['ip'] == nil
57
+ domains << {id: d['id'], fqdn: d['fqdn']}
58
+ end
59
+ end
60
+
61
+ if domains == []
62
+ abort("There is no dnsresource to clear.")
63
+ end
64
+
65
+ domains.each do |d|
66
+ puts "Deleting #{d[:fqdn]}..."
67
+ conn.request(:delete, ['dnsresources', d[:id].to_s])
68
+ end
69
+ else
70
+ puts "To clear #{resource} is not available."
71
+ end
72
+ end
73
+
74
+ desc 'generate', "Generate custom data."
75
+ def generate(resource)
76
+ case resource
77
+ when 'hosts'
78
+ records = []
79
+ conn.request(:get, ['dnsresources']).each do |d|
80
+ records << { ip: d['ip_addresses'][0]['ip'], fqdn: d['fqdn'] }
81
+ end
82
+ records.sort_by! { |h| h[:fqdn] }
83
+ domain = conn.request(:get, ['domains'])[0]['name']
84
+ to_slice = ".#{domain}"
85
+ records.each do |r|
86
+ hostname = r[:fqdn].gsub(to_slice, '')
87
+ # to except the records for physical interfaces
88
+ # such as eth0.10.foo.example.com
89
+ if hostname.split('.').length < 3
90
+ printf "%-20s %-20s %s\n", r[:ip], hostname, r[:fqdn]
91
+ end
92
+ end
93
+ puts "# Updated date: #{Time.now.to_s}"
94
+ else
95
+ puts "To generate #{resource} is not available."
96
+ end
97
+ end
98
+ end
99
+ end
100
+ end
101
+
@@ -0,0 +1,4 @@
1
+ maas:
2
+ key: K:E:Y
3
+ url: http://maas.example.com/MAAS/api/2.0
4
+
@@ -0,0 +1,21 @@
1
+ require 'active_support/core_ext/hash'
2
+
3
+ module Maas
4
+ module Client
5
+ module Util
6
+ # taken from https://gist.github.com/andrewpcone/11359798
7
+ def symbolize_keys(thing)
8
+ case thing
9
+ when Array
10
+ thing.map{|v| symbolize_keys(v)}
11
+ when Hash
12
+ inj = thing.inject({}) {|h, (k,v)| h[k] = symbolize_keys(v); h}
13
+ inj.symbolize_keys
14
+ else
15
+ thing
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Maas
4
+ module Client
5
+ VERSION = '0.1.20'
6
+ end
7
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'maas/client/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'maas-client'
8
+ spec.version = Maas::Client::VERSION
9
+ spec.authors = ['Don Draper']
10
+ spec.email = ['donoldfashioned@gmail.com']
11
+
12
+ spec.summary = 'A client library for MAAS'
13
+ spec.description = 'A client library that can be used to call MAAS API.'
14
+ spec.homepage = 'https://github.com/itisnotdone/maas-client'
15
+ spec.license = 'MIT'
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
+ f.match(%r{^(test|spec|features)/})
19
+ end
20
+ spec.bindir = 'bin'
21
+ spec.executables = ['rbmaas']
22
+ spec.require_paths = ['lib']
23
+
24
+ spec.required_ruby_version = '~> 2.3.1'
25
+
26
+ spec.add_development_dependency 'rake', '~> 10.5'
27
+ spec.add_development_dependency 'rspec', '~> 3.5'
28
+ spec.add_development_dependency 'simplecov', '~> 0.13.0'
29
+ spec.add_development_dependency 'fivemat', '~> 1.3'
30
+ spec.add_development_dependency 'cane', '~> 3.0'
31
+ spec.add_development_dependency 'rubocop', '~> 0.47.1'
32
+
33
+ spec.add_runtime_dependency 'oauth', '~> 0.5.1'
34
+ spec.add_runtime_dependency 'json', '~> 2.1.0'
35
+ spec.add_runtime_dependency 'thor', '~> 0.19.0'
36
+ spec.add_runtime_dependency 'activesupport', '~> 4.2.8'
37
+ end
metadata ADDED
@@ -0,0 +1,204 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: maas-client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.20
5
+ platform: ruby
6
+ authors:
7
+ - Don Draper
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-07-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '10.5'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '10.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.5'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.5'
41
+ - !ruby/object:Gem::Dependency
42
+ name: simplecov
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.13.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.13.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: fivemat
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.3'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: cane
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.47.1
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.47.1
97
+ - !ruby/object:Gem::Dependency
98
+ name: oauth
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 0.5.1
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 0.5.1
111
+ - !ruby/object:Gem::Dependency
112
+ name: json
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 2.1.0
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 2.1.0
125
+ - !ruby/object:Gem::Dependency
126
+ name: thor
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 0.19.0
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 0.19.0
139
+ - !ruby/object:Gem::Dependency
140
+ name: activesupport
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: 4.2.8
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: 4.2.8
153
+ description: A client library that can be used to call MAAS API.
154
+ email:
155
+ - donoldfashioned@gmail.com
156
+ executables:
157
+ - rbmaas
158
+ extensions: []
159
+ extra_rdoc_files: []
160
+ files:
161
+ - ".gitignore"
162
+ - ".rspec"
163
+ - ".rubocop.yml"
164
+ - ".ruby-gemset"
165
+ - ".ruby-version"
166
+ - CODE_OF_CONDUCT.md
167
+ - Gemfile
168
+ - LICENSE.txt
169
+ - README.md
170
+ - Rakefile
171
+ - bin/git_autoconfig.sh
172
+ - bin/push
173
+ - bin/rbmaas
174
+ - lib/maas/client.rb
175
+ - lib/maas/client/cli.rb
176
+ - lib/maas/client/template/rbmaas.yml
177
+ - lib/maas/client/util.rb
178
+ - lib/maas/client/version.rb
179
+ - maas-client.gemspec
180
+ homepage: https://github.com/itisnotdone/maas-client
181
+ licenses:
182
+ - MIT
183
+ metadata: {}
184
+ post_install_message:
185
+ rdoc_options: []
186
+ require_paths:
187
+ - lib
188
+ required_ruby_version: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - "~>"
191
+ - !ruby/object:Gem::Version
192
+ version: 2.3.1
193
+ required_rubygems_version: !ruby/object:Gem::Requirement
194
+ requirements:
195
+ - - ">="
196
+ - !ruby/object:Gem::Version
197
+ version: '0'
198
+ requirements: []
199
+ rubyforge_project:
200
+ rubygems_version: 2.6.12
201
+ signing_key:
202
+ specification_version: 4
203
+ summary: A client library for MAAS
204
+ test_files: []