conjur-cli 4.19.0 → 4.20.1
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 +4 -4
- data/CHANGELOG.md +8 -0
- data/Rakefile +1 -0
- data/bin/_conjur_completions.yaml +3 -0
- data/conjur.gemspec +1 -1
- data/lib/conjur/cli.rb +13 -12
- data/lib/conjur/command/groups.rb +29 -0
- data/lib/conjur/version.rb +2 -2
- data/lib/patches/conjur/error.rb +96 -0
- data/spec/command/groups_spec.rb +27 -0
- metadata +5 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 54829e90e9f47497bd87c30bdaa35c6004a91d64
|
|
4
|
+
data.tar.gz: b468b645050ddf11e00e2c111e87fc32dd9d2945
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e6750225d94caf197718145f90077f86b3e50dde0c8d8ba49d7e63db7cdb3fa3adf72c72eef3615a722a64486e1ce72aa5669fb820c56be0065abc4adac30d78
|
|
7
|
+
data.tar.gz: d1758ad2e32ed4a5161435edd98100399c466c85bfcff273c735fef1ec67a0ec889d5156ac184e0f555666d886912714f09171799be5be887ecda4009a1ebde6
|
data/CHANGELOG.md
CHANGED
data/Rakefile
CHANGED
|
@@ -16,6 +16,7 @@ task :jenkins => ['ci:setup:rspec', :spec, 'ci:setup:cucumber_report_cleanup'] d
|
|
|
16
16
|
File.write('build_number', ENV['BUILD_NUMBER']) if ENV['BUILD_NUMBER']
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
+
desc "Generate the update completions file"
|
|
19
20
|
task :completions do
|
|
20
21
|
# having 'lib' in the load path, which happens to be the case when running rake,
|
|
21
22
|
# messes up GLIs commands_from
|
|
@@ -27,6 +27,8 @@
|
|
|
27
27
|
:create: true
|
|
28
28
|
:list: true
|
|
29
29
|
:show: true
|
|
30
|
+
:update: true
|
|
31
|
+
:gidsearch: true
|
|
30
32
|
:retire: true
|
|
31
33
|
:members:
|
|
32
34
|
:list: true
|
|
@@ -80,6 +82,7 @@
|
|
|
80
82
|
:members: true
|
|
81
83
|
:grant_to: true
|
|
82
84
|
:revoke_from: true
|
|
85
|
+
:graph: true
|
|
83
86
|
:script:
|
|
84
87
|
:execute: true
|
|
85
88
|
:secret:
|
data/conjur.gemspec
CHANGED
|
@@ -17,7 +17,7 @@ Gem::Specification.new do |gem|
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
gem.add_dependency 'activesupport'
|
|
20
|
-
gem.add_dependency 'conjur-api', '~> 4.
|
|
20
|
+
gem.add_dependency 'conjur-api', '~> 4.13.0'
|
|
21
21
|
gem.add_dependency 'gli', '>=2.8.0'
|
|
22
22
|
gem.add_dependency 'highline'
|
|
23
23
|
gem.add_dependency 'netrc', '~> 0.10.2'
|
data/lib/conjur/cli.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#
|
|
2
|
-
# Copyright (C) 2013 Conjur Inc
|
|
2
|
+
# Copyright (C) 2013-2015 Conjur Inc.
|
|
3
3
|
#
|
|
4
4
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
5
5
|
# this software and associated documentation files (the "Software"), to deal in
|
|
@@ -121,19 +121,20 @@ module Conjur
|
|
|
121
121
|
|
|
122
122
|
on_error do |exception|
|
|
123
123
|
require 'rest-client'
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
124
|
+
require 'patches/conjur/error'
|
|
125
|
+
|
|
126
|
+
run_default_handler = true
|
|
127
|
+
if exception.is_a?(RestClient::Exception) && exception.response
|
|
128
|
+
err = Conjur::Error.create exception.response.body
|
|
129
|
+
if err
|
|
130
|
+
$stderr.puts "error: " + err.message
|
|
131
|
+
run_default_handler = false # suppress default error message
|
|
132
|
+
else
|
|
133
|
+
$stderr.puts exception.response.body
|
|
130
134
|
end
|
|
131
135
|
end
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
Conjur.log << "error: #{exception}\n#{exception.backtrace.join("\n") rescue 'NO BACKTRACE?'}"
|
|
135
|
-
end
|
|
136
|
-
true
|
|
136
|
+
|
|
137
|
+
run_default_handler
|
|
137
138
|
end
|
|
138
139
|
end
|
|
139
140
|
end
|
|
@@ -32,11 +32,16 @@ class Conjur::Command::Groups < Conjur::Command
|
|
|
32
32
|
group.desc "Create a new group"
|
|
33
33
|
group.arg_name "id"
|
|
34
34
|
group.command :create do |c|
|
|
35
|
+
c.desc "GID number to be associated with the group (optional)"
|
|
36
|
+
c.flag [:gidnumber]
|
|
37
|
+
|
|
35
38
|
acting_as_option(c)
|
|
36
39
|
|
|
37
40
|
c.action do |global_options,options,args|
|
|
38
41
|
id = require_arg(args, 'id')
|
|
39
42
|
|
|
43
|
+
options[:gidnumber] = Integer(options[:gidnumber]) if options[:gidnumber]
|
|
44
|
+
|
|
40
45
|
group = api.create_group(id, options)
|
|
41
46
|
display(group, options)
|
|
42
47
|
end
|
|
@@ -60,6 +65,30 @@ class Conjur::Command::Groups < Conjur::Command
|
|
|
60
65
|
end
|
|
61
66
|
end
|
|
62
67
|
|
|
68
|
+
group.desc "Update group's attributes (eg. gidnumber)"
|
|
69
|
+
group.arg_name "id"
|
|
70
|
+
group.command :update do |c|
|
|
71
|
+
c.desc "GID number to be associated with the group"
|
|
72
|
+
c.flag [:gidnumber]
|
|
73
|
+
c.action do |global_options, options, args|
|
|
74
|
+
id = require_arg(args, 'id')
|
|
75
|
+
|
|
76
|
+
options[:gidnumber] = Integer(options[:gidnumber])
|
|
77
|
+
api.group(id).update(options)
|
|
78
|
+
|
|
79
|
+
puts "GID set"
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
group.desc "Find groups by GID"
|
|
84
|
+
group.arg_name "gid"
|
|
85
|
+
group.command :gidsearch do |c|
|
|
86
|
+
c.action do |global_options, options, args|
|
|
87
|
+
gidnumber = Integer require_arg args, 'gid'
|
|
88
|
+
display api.find_groups(gidnumber: gidnumber)
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
63
92
|
group.desc "Decommission a group"
|
|
64
93
|
group.arg_name "id"
|
|
65
94
|
group.command :retire do |c|
|
data/lib/conjur/version.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#
|
|
2
|
-
# Copyright (C) 2014 Conjur Inc
|
|
2
|
+
# Copyright (C) 2014-2015 Conjur Inc.
|
|
3
3
|
#
|
|
4
4
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
5
5
|
# this software and associated documentation files (the "Software"), to deal in
|
|
@@ -19,6 +19,6 @@
|
|
|
19
19
|
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
20
20
|
#
|
|
21
21
|
module Conjur
|
|
22
|
-
VERSION = "4.
|
|
22
|
+
VERSION = "4.20.1"
|
|
23
23
|
::Version=VERSION
|
|
24
24
|
end
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# Copyright (C) 2015 Conjur Inc
|
|
2
|
+
#
|
|
3
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
4
|
+
# this software and associated documentation files (the "Software"), to deal in
|
|
5
|
+
# the Software without restriction, including without limitation the rights to
|
|
6
|
+
# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
7
|
+
# the Software, and to permit persons to whom the Software is furnished to do so,
|
|
8
|
+
# subject to the following conditions:
|
|
9
|
+
#
|
|
10
|
+
# The above copyright notice and this permission notice shall be included in all
|
|
11
|
+
# copies or substantial portions of the Software.
|
|
12
|
+
#
|
|
13
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
15
|
+
# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
16
|
+
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
17
|
+
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
18
|
+
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
19
|
+
|
|
20
|
+
# Conjur::Error is not in the API v4 because it breaks backwards compatibility.
|
|
21
|
+
# Try to load it, and if not there, patch it in.
|
|
22
|
+
begin
|
|
23
|
+
require 'conjur/error'
|
|
24
|
+
rescue LoadError
|
|
25
|
+
# old API version
|
|
26
|
+
module Conjur
|
|
27
|
+
# Error class lifted from v5 branch of conjur-api.
|
|
28
|
+
|
|
29
|
+
# The base Conjur error class. Rescue it to catch errors generated by the Conjur services.
|
|
30
|
+
class Error < RuntimeError
|
|
31
|
+
# Create a new instance based on structured error info.
|
|
32
|
+
# @param [String] body JSON error information
|
|
33
|
+
# @return [Error, nil] the exception instance or nil if +body+ doesn't
|
|
34
|
+
# contain valid error info
|
|
35
|
+
def self.create body
|
|
36
|
+
error = JSON.parse(body)['error']
|
|
37
|
+
kind = error['kind']
|
|
38
|
+
klass = const_defined?(kind) && const_get(kind) || self
|
|
39
|
+
klass.new error
|
|
40
|
+
rescue
|
|
41
|
+
nil
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# @!attribute [r] message
|
|
45
|
+
# @return [String] human-readable error message, as returned by the Conjur service
|
|
46
|
+
# @see #details
|
|
47
|
+
def message
|
|
48
|
+
@error['message']
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# @!attribute [r] details
|
|
52
|
+
# @return error details, as returned by the Conjur service
|
|
53
|
+
# @see #message
|
|
54
|
+
def details
|
|
55
|
+
@error['details']
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# @!attribute [r] kind
|
|
59
|
+
# @return [String] error kind, as returned by the Conjur service
|
|
60
|
+
# @note Usually it will equal the class name.
|
|
61
|
+
def kind
|
|
62
|
+
@error['kind']
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# Indicates that the looked up record does not exist.
|
|
66
|
+
class RecordNotFound < Error
|
|
67
|
+
# @!attribute [r] details
|
|
68
|
+
# @return [Hash<String, String>] error details:
|
|
69
|
+
# - +'kind'+ of the searched object
|
|
70
|
+
# - +'id'+ that is missing
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# Indicates a missing argument for a method call.
|
|
74
|
+
class MissingArgument < Error
|
|
75
|
+
# @!attribute [r] details
|
|
76
|
+
# @return [String] name of the missing argument
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Indicates a name or identifier clash.
|
|
80
|
+
class UniqueConstraintViolation < Error
|
|
81
|
+
# @!attribute [r] details
|
|
82
|
+
# @return [Hash<String, String>] error details:
|
|
83
|
+
# - +'value'+ that caused the clash
|
|
84
|
+
# - +'field'+ in which the clash occurred
|
|
85
|
+
# - +'kind'+ of an object being manipulated
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
private
|
|
89
|
+
|
|
90
|
+
def initialize error
|
|
91
|
+
@error = error
|
|
92
|
+
super message
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
data/spec/command/groups_spec.rb
CHANGED
|
@@ -1,6 +1,33 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
describe Conjur::Command::Groups, logged_in: true do
|
|
4
|
+
describe_command 'group create --gidnumber 12345 some-group' do
|
|
5
|
+
it "creates the group with a specified gidnumber" do
|
|
6
|
+
expect_any_instance_of(Conjur::API).to receive(:create_group).with('some-group', gidnumber: 12345).and_return "something"
|
|
7
|
+
expect { invoke }.to write "something"
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe_command 'group update --gidnumber 12345 some-group' do
|
|
12
|
+
it "updates the gid" do
|
|
13
|
+
expect_any_instance_of(Conjur::API).to \
|
|
14
|
+
receive(:group).with('some-group').and_return(group = double("group"))
|
|
15
|
+
expect(group).to receive(:update).with(gidnumber: 12_345)
|
|
16
|
+
expect { invoke }.to write "GID set"
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
context "lookup by GID" do
|
|
21
|
+
let(:search_result) { %w(g1 g2) }
|
|
22
|
+
describe_command "group gidsearch 12345" do
|
|
23
|
+
it "finds the groups" do
|
|
24
|
+
expect_any_instance_of(Conjur::API).to \
|
|
25
|
+
receive(:find_groups).with(gidnumber: 12_345).and_return search_result
|
|
26
|
+
expect { invoke }.to write(JSON.pretty_generate(search_result))
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
4
31
|
describe_command "group:members:add group user:alice" do
|
|
5
32
|
it "adds the role to the group" do
|
|
6
33
|
expect(RestClient::Request).to receive(:execute).with(
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: conjur-cli
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 4.
|
|
4
|
+
version: 4.20.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Rafal Rzepecki
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2015-
|
|
12
|
+
date: 2015-02-17 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: activesupport
|
|
@@ -31,14 +31,14 @@ dependencies:
|
|
|
31
31
|
requirements:
|
|
32
32
|
- - ~>
|
|
33
33
|
- !ruby/object:Gem::Version
|
|
34
|
-
version: 4.
|
|
34
|
+
version: 4.13.0
|
|
35
35
|
type: :runtime
|
|
36
36
|
prerelease: false
|
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
|
38
38
|
requirements:
|
|
39
39
|
- - ~>
|
|
40
40
|
- !ruby/object:Gem::Version
|
|
41
|
-
version: 4.
|
|
41
|
+
version: 4.13.0
|
|
42
42
|
- !ruby/object:Gem::Dependency
|
|
43
43
|
name: gli
|
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -318,6 +318,7 @@ files:
|
|
|
318
318
|
- lib/conjur/dsl/runner.rb
|
|
319
319
|
- lib/conjur/identifier_manipulation.rb
|
|
320
320
|
- lib/conjur/version.rb
|
|
321
|
+
- lib/patches/conjur/error.rb
|
|
321
322
|
- profile.rb
|
|
322
323
|
- spec/authn_spec.rb
|
|
323
324
|
- spec/command/assets_spec.rb
|