avm-eac_gitlab_base0 0.4.0 → 0.6.0
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/lib/avm/eac_gitlab_base0/api/base_entity/validate_response_data.rb +42 -0
- data/lib/avm/eac_gitlab_base0/api/base_entity.rb +15 -23
- data/lib/avm/eac_gitlab_base0/api/file.rb +0 -4
- data/lib/avm/eac_gitlab_base0/api/forbidden_error.rb +14 -0
- data/lib/avm/eac_gitlab_base0/api/group.rb +9 -6
- data/lib/avm/eac_gitlab_base0/api/member.rb +0 -4
- data/lib/avm/eac_gitlab_base0/api/node.rb +0 -5
- data/lib/avm/eac_gitlab_base0/api/nodes_set/add_by_group_projects_id.rb +38 -0
- data/lib/avm/eac_gitlab_base0/api/nodes_set.rb +11 -20
- data/lib/avm/eac_gitlab_base0/api/project.rb +10 -9
- data/lib/avm/eac_gitlab_base0/api/root.rb +20 -11
- data/lib/avm/eac_gitlab_base0/api/tree.rb +36 -0
- data/lib/avm/eac_gitlab_base0/api.rb +1 -4
- data/lib/avm/eac_gitlab_base0/application_scms/base.rb +0 -3
- data/lib/avm/eac_gitlab_base0/instances/base.rb +1 -5
- data/lib/avm/eac_gitlab_base0/instances/runners/nodes/list.rb +22 -0
- data/lib/avm/eac_gitlab_base0/instances/runners/nodes/members.rb +70 -0
- data/lib/avm/eac_gitlab_base0/instances/runners/nodes.rb +31 -0
- data/lib/avm/eac_gitlab_base0/instances/runners.rb +11 -0
- data/lib/avm/eac_gitlab_base0/version.rb +1 -1
- data/lib/avm/eac_gitlab_base0.rb +4 -2
- metadata +29 -22
- data/lib/avm/eac_gitlab_base0/application_scms.rb +0 -11
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9c2d9e9603003ddf32274e4c517aac07cd14b670d8efe5dd53462dee6a1351f6
|
|
4
|
+
data.tar.gz: b4c32645f75dfa414b3490bf7b1ddf84d043e95f8850f41ccaca02471f6a28bb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c9acbde8eda68355c5b1a5efaf5778dfac7e59b47d4c02a1def4532b980b660c0eade120e077052226780610d5da4de813976ceea64294c1975645e4aaaa636a
|
|
7
|
+
data.tar.gz: e4e1f5cd91abccd72e5181e8992a17b757232bc74b140ee3c18b0825d55b26c58cc3eb426e775f645ac42be422bf1bc4b0aaa931a2ce3a3910b2e8e96f0376ad
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module EacGitlabBase0
|
|
5
|
+
class Api < ::EacRest::Api
|
|
6
|
+
class BaseEntity < ::EacRest::Entity
|
|
7
|
+
class ValidateResponseData
|
|
8
|
+
acts_as_instance_method
|
|
9
|
+
common_constructor :owner, :response
|
|
10
|
+
|
|
11
|
+
# @return Object
|
|
12
|
+
def result
|
|
13
|
+
raise ::Avm::EacGitlabBase0::Api::ForbiddenError.new(response.body_str, response) if
|
|
14
|
+
response.status == 403
|
|
15
|
+
|
|
16
|
+
with_root_attribute(:error) do |v|
|
|
17
|
+
raise "URL: #{response.url}, Error: #{v}"
|
|
18
|
+
end
|
|
19
|
+
with_root_attribute(:message) do |_v|
|
|
20
|
+
return nil if response.status == 404
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
response.body_data
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
protected
|
|
27
|
+
|
|
28
|
+
# @param attribute [String, Symbol]
|
|
29
|
+
# @return [String, nil]
|
|
30
|
+
def with_root_attribute(attribute)
|
|
31
|
+
attribute = attribute.to_s
|
|
32
|
+
response.body_data.then do |v|
|
|
33
|
+
break nil unless v.is_a?(::Hash) && v.key?(attribute)
|
|
34
|
+
|
|
35
|
+
yield(v.fetch(attribute))
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'eac_rest/api'
|
|
4
|
-
require 'eac_rest/entity'
|
|
5
|
-
require 'eac_ruby_utils/core_ext'
|
|
6
|
-
|
|
7
3
|
module Avm
|
|
8
4
|
module EacGitlabBase0
|
|
9
5
|
class Api < ::EacRest::Api
|
|
@@ -20,19 +16,27 @@ module Avm
|
|
|
20
16
|
::CGI.escape(id.to_s)
|
|
21
17
|
end
|
|
22
18
|
|
|
23
|
-
|
|
19
|
+
# @param suffix [String]
|
|
20
|
+
# @param klass [Class<Avm::EacGitlabBase0::Api::BaseEntity>]
|
|
21
|
+
# @return [Avm::EacGitlabBase0::Api::BaseEntity]
|
|
22
|
+
def fetch_entity(suffix, klass)
|
|
24
23
|
validate_response_data(
|
|
25
|
-
dump_response(api.request_json(suffix).response)
|
|
26
|
-
|
|
27
|
-
).if_present { |v| klass.new(api, v) }
|
|
24
|
+
dump_response(api.request_json(suffix).response)
|
|
25
|
+
).if_present { |v| child_entity(klass, v) }
|
|
28
26
|
end
|
|
29
27
|
|
|
30
|
-
|
|
28
|
+
# @param suffix [String]
|
|
29
|
+
# @param klass [Class<Avm::EacGitlabBase0::Api::BaseEntity>]
|
|
30
|
+
# @return [Array<Avm::EacGitlabBase0::Api::BaseEntity>]
|
|
31
|
+
def fetch_entities(suffix, klass) # rubocop:disable Metrics/MethodLength
|
|
31
32
|
r = []
|
|
32
33
|
request = api.request_json(suffix)
|
|
33
34
|
while request
|
|
34
35
|
response = request.response
|
|
35
|
-
|
|
36
|
+
body_data = validate_response_data(response)
|
|
37
|
+
break unless body_data
|
|
38
|
+
|
|
39
|
+
r += body_data.map { |rr| child_entity(klass, rr) }
|
|
36
40
|
request = response.link('next').if_present do |v|
|
|
37
41
|
api.request_json(v)
|
|
38
42
|
end
|
|
@@ -53,19 +57,7 @@ module Avm
|
|
|
53
57
|
::EacRubyUtils::Yaml.dump_file(file, data)
|
|
54
58
|
end
|
|
55
59
|
|
|
56
|
-
|
|
57
|
-
if response.body_data.is_a?(::Hash)
|
|
58
|
-
response.body_data['error'].if_present do |v|
|
|
59
|
-
raise "URL: #{response.url}, Data: #{v}"
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
response.body_data['message'].if_present do |v|
|
|
63
|
-
return nil if v == not_found_message
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
response.body_data
|
|
68
|
-
end
|
|
60
|
+
require_sub __FILE__, require_mode: :kernel
|
|
69
61
|
end
|
|
70
62
|
end
|
|
71
63
|
end
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'avm/eac_gitlab_base0/api/node'
|
|
4
|
-
require 'avm/eac_gitlab_base0/api/project'
|
|
5
|
-
require 'eac_rest/api'
|
|
6
|
-
require 'eac_ruby_utils/core_ext'
|
|
7
|
-
|
|
8
3
|
module Avm
|
|
9
4
|
module EacGitlabBase0
|
|
10
5
|
class Api < ::EacRest::Api
|
|
@@ -21,7 +16,7 @@ module Avm
|
|
|
21
16
|
end
|
|
22
17
|
|
|
23
18
|
def api_prefix
|
|
24
|
-
"/groups/#{encode_id(id)}"
|
|
19
|
+
"/v4/groups/#{encode_id(id)}"
|
|
25
20
|
end
|
|
26
21
|
|
|
27
22
|
def to_s
|
|
@@ -43,6 +38,14 @@ module Avm
|
|
|
43
38
|
::Avm::EacGitlabBase0::Api::Project
|
|
44
39
|
)
|
|
45
40
|
end
|
|
41
|
+
|
|
42
|
+
# @return [Array<Avm::EacGitlabBase0::Api::Group>]
|
|
43
|
+
def subgroups_uncached
|
|
44
|
+
fetch_entities(
|
|
45
|
+
"#{api_prefix}/subgroups?order_by=path&sort=asc&per_page=9999",
|
|
46
|
+
::Avm::EacGitlabBase0::Api::Group
|
|
47
|
+
)
|
|
48
|
+
end
|
|
46
49
|
end
|
|
47
50
|
end
|
|
48
51
|
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module EacGitlabBase0
|
|
5
|
+
class Api < ::EacRest::Api
|
|
6
|
+
class NodesSet
|
|
7
|
+
class AddByGroupProjectsId
|
|
8
|
+
acts_as_instance_method
|
|
9
|
+
enable_simple_cache
|
|
10
|
+
|
|
11
|
+
common_constructor :owner, :group_id
|
|
12
|
+
|
|
13
|
+
# @return [Array<Avm::EacGitlabBase0::Api::Project>]
|
|
14
|
+
def result
|
|
15
|
+
subgroups + projects
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
protected
|
|
19
|
+
|
|
20
|
+
# @return [Avm::EacGitlabBase0::Api::Group]
|
|
21
|
+
def group_uncached
|
|
22
|
+
owner.rest_api.root.group(group_id) || raise("No group found with ID = \"#{group_id}\"")
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# @return [Array<Avm::EacGitlabBase0::Api::Project>]
|
|
26
|
+
def projects
|
|
27
|
+
group.projects.map { |project| owner.send(:add_node, project) }
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# @return [Array<Avm::EacGitlabBase0::Api::Group>]
|
|
31
|
+
def subgroups
|
|
32
|
+
group.subgroups.map { |subgroup| owner.add_by_group_projects_id(subgroup.id) }
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'avm/eac_gitlab_base0/api/base_entity'
|
|
4
|
-
require 'avm/eac_gitlab_base0/api/project'
|
|
5
|
-
require 'eac_rest/api'
|
|
6
|
-
require 'eac_ruby_utils/core_ext'
|
|
7
|
-
|
|
8
3
|
module Avm
|
|
9
4
|
module EacGitlabBase0
|
|
10
5
|
class Api < ::EacRest::Api
|
|
@@ -42,20 +37,25 @@ module Avm
|
|
|
42
37
|
send("add_by_#{type}_id", parsed_id)
|
|
43
38
|
end
|
|
44
39
|
|
|
40
|
+
# @return [Avm::EacGitlabBase0::Api::Root]
|
|
41
|
+
def add_all_projects
|
|
42
|
+
rest_api.root.projects.each { |project| add_node(project) }
|
|
43
|
+
end
|
|
44
|
+
|
|
45
45
|
# @return [Array<Avm::EacGitlabBase0::Api::Group>]
|
|
46
|
-
def
|
|
47
|
-
nodes.
|
|
46
|
+
def groups
|
|
47
|
+
nodes.grep(::Avm::EacGitlabBase0::Api::Group)
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
# @return [Array<Avm::EacGitlabBase0::Api::Project>]
|
|
51
51
|
def projects
|
|
52
|
-
nodes.
|
|
52
|
+
nodes.grep(::Avm::EacGitlabBase0::Api::Project)
|
|
53
53
|
end
|
|
54
54
|
|
|
55
55
|
# @return [Array<Avm::EacGitlabBase0::Api::Node>]
|
|
56
56
|
def nodes
|
|
57
57
|
r = nodes_set
|
|
58
|
-
r = r.
|
|
58
|
+
r = r.grep_v(::Avm::EacGitlabBase0::Api::Group) if no_groups?
|
|
59
59
|
r.sort_by { |p| [p.full_path] }
|
|
60
60
|
end
|
|
61
61
|
|
|
@@ -88,17 +88,6 @@ module Avm
|
|
|
88
88
|
[add_node(group)]
|
|
89
89
|
end
|
|
90
90
|
|
|
91
|
-
# @return [Array<Avm::EacGitlabBase0::Api::Project>]
|
|
92
|
-
def add_by_group_projects_id(id)
|
|
93
|
-
group = rest_api.root.group(id)
|
|
94
|
-
|
|
95
|
-
raise "No group found with ID = \"#{id}\"" unless group
|
|
96
|
-
|
|
97
|
-
group.projects.map do |project|
|
|
98
|
-
add_node(project)
|
|
99
|
-
end
|
|
100
|
-
end
|
|
101
|
-
|
|
102
91
|
# @return [Array<Avm::EacGitlabBase0::Api::Node>]
|
|
103
92
|
def add_by_group_and_projects_id(id)
|
|
104
93
|
add_by_group_id(id) + add_by_group_projects_id(id)
|
|
@@ -112,6 +101,8 @@ module Avm
|
|
|
112
101
|
|
|
113
102
|
[add_node(project)]
|
|
114
103
|
end
|
|
104
|
+
|
|
105
|
+
require_sub __FILE__, require_mode: :kernel
|
|
115
106
|
end
|
|
116
107
|
end
|
|
117
108
|
end
|
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'avm/eac_gitlab_base0/api/file'
|
|
4
|
-
require 'avm/eac_gitlab_base0/api/member'
|
|
5
|
-
require 'avm/eac_gitlab_base0/api/node'
|
|
6
|
-
require 'eac_rest/api'
|
|
7
|
-
require 'eac_ruby_utils/core_ext'
|
|
8
|
-
|
|
9
3
|
module Avm
|
|
10
4
|
module EacGitlabBase0
|
|
11
5
|
class Api < ::EacRest::Api
|
|
@@ -32,7 +26,7 @@ module Avm
|
|
|
32
26
|
end
|
|
33
27
|
|
|
34
28
|
def api_prefix
|
|
35
|
-
"/projects/#{encode_id(id)}"
|
|
29
|
+
"/v4/projects/#{encode_id(id)}"
|
|
36
30
|
end
|
|
37
31
|
|
|
38
32
|
def full_path
|
|
@@ -42,8 +36,15 @@ module Avm
|
|
|
42
36
|
def file(path)
|
|
43
37
|
fetch_entity(
|
|
44
38
|
"#{api_prefix}/repository/files/#{encode_id(path)}?ref=#{default_branch}",
|
|
45
|
-
::Avm::EacGitlabBase0::Api::File
|
|
46
|
-
|
|
39
|
+
::Avm::EacGitlabBase0::Api::File
|
|
40
|
+
)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# @return [Array<Avm::EacGitlabBase0::Api::Tree>]
|
|
44
|
+
def tree
|
|
45
|
+
fetch_entities(
|
|
46
|
+
"#{api_prefix}/repository/tree",
|
|
47
|
+
::Avm::EacGitlabBase0::Api::Tree
|
|
47
48
|
)
|
|
48
49
|
end
|
|
49
50
|
|
|
@@ -1,27 +1,36 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'avm/eac_gitlab_base0/api/base_entity'
|
|
4
|
-
require 'avm/eac_gitlab_base0/api/project'
|
|
5
|
-
require 'eac_rest/api'
|
|
6
|
-
require 'eac_ruby_utils/core_ext'
|
|
7
|
-
|
|
8
3
|
module Avm
|
|
9
4
|
module EacGitlabBase0
|
|
10
5
|
class Api < ::EacRest::Api
|
|
11
6
|
class Root < ::Avm::EacGitlabBase0::Api::BaseEntity
|
|
12
7
|
def group(id)
|
|
13
8
|
fetch_entity(
|
|
14
|
-
"/groups/#{encode_id(id)}?with_projects=false",
|
|
15
|
-
::Avm::EacGitlabBase0::Api::Group
|
|
16
|
-
|
|
9
|
+
"/v4/groups/#{encode_id(id)}?with_projects=false",
|
|
10
|
+
::Avm::EacGitlabBase0::Api::Group
|
|
11
|
+
)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# @return [Array<Avm::EacGitlabBase0::Api::Group>]
|
|
15
|
+
def groups
|
|
16
|
+
fetch_entities(
|
|
17
|
+
'/v4/groups?with_projects=false',
|
|
18
|
+
::Avm::EacGitlabBase0::Api::Group
|
|
17
19
|
)
|
|
18
20
|
end
|
|
19
21
|
|
|
20
22
|
def project(id)
|
|
21
23
|
fetch_entity(
|
|
22
|
-
"/projects/#{encode_id(id)}",
|
|
23
|
-
::Avm::EacGitlabBase0::Api::Project
|
|
24
|
-
|
|
24
|
+
"/v4/projects/#{encode_id(id)}",
|
|
25
|
+
::Avm::EacGitlabBase0::Api::Project
|
|
26
|
+
)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# @return [Array<Avm::EacGitlabBase0::Api::Projects>]
|
|
30
|
+
def projects
|
|
31
|
+
fetch_entities(
|
|
32
|
+
'/v4/projects',
|
|
33
|
+
::Avm::EacGitlabBase0::Api::Project
|
|
25
34
|
)
|
|
26
35
|
end
|
|
27
36
|
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module EacGitlabBase0
|
|
5
|
+
class Api < ::EacRest::Api
|
|
6
|
+
class Tree < ::Avm::EacGitlabBase0::Api::BaseEntity
|
|
7
|
+
enable_listable
|
|
8
|
+
|
|
9
|
+
lists.add_string :type, :blob, :tree
|
|
10
|
+
|
|
11
|
+
FIELDS = %w[mode name path type].freeze
|
|
12
|
+
|
|
13
|
+
FIELDS.each do |field|
|
|
14
|
+
define_method field do
|
|
15
|
+
data.fetch(field)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# @return [Boolean]
|
|
20
|
+
def directory?
|
|
21
|
+
type == TYPE_TREE
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# @return [Avm::EacGitlabBase0::Api::File]
|
|
25
|
+
def file
|
|
26
|
+
parent_entity.file(path)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# @return [Boolean]
|
|
30
|
+
def file?
|
|
31
|
+
type == TYPE_BLOB
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'eac_rest/api'
|
|
4
|
-
require 'eac_ruby_utils/core_ext'
|
|
5
|
-
|
|
6
3
|
module Avm
|
|
7
4
|
module EacGitlabBase0
|
|
8
5
|
class Api < ::EacRest::Api
|
|
@@ -15,7 +12,7 @@ module Avm
|
|
|
15
12
|
end
|
|
16
13
|
|
|
17
14
|
def build_service_url_suffix(suffix)
|
|
18
|
-
r = super
|
|
15
|
+
r = super
|
|
19
16
|
r.path = API_SUFFIX + r.path
|
|
20
17
|
r
|
|
21
18
|
end
|
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'avm/instances/base'
|
|
4
|
-
require 'avm/eac_gitlab_base0/api'
|
|
5
|
-
require 'eac_ruby_utils/core_ext'
|
|
6
|
-
|
|
7
3
|
module Avm
|
|
8
4
|
module EacGitlabBase0
|
|
9
5
|
module Instances
|
|
10
6
|
class Base < ::Avm::Instances::Base
|
|
11
7
|
# @return [Avm::EacGitlabBase0::Api]
|
|
12
8
|
def rest_api
|
|
13
|
-
@rest_api ||= ::Avm::EacGitlabBase0::Api.new(web_url)
|
|
9
|
+
@rest_api ||= ::Avm::EacGitlabBase0::Api.new("#{web_url}/api")
|
|
14
10
|
end
|
|
15
11
|
end
|
|
16
12
|
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module EacGitlabBase0
|
|
5
|
+
module Instances
|
|
6
|
+
module Runners
|
|
7
|
+
class Nodes
|
|
8
|
+
class List
|
|
9
|
+
runner_with :help
|
|
10
|
+
|
|
11
|
+
def run
|
|
12
|
+
infov 'Nodes', runner_context.call(:nodes).count
|
|
13
|
+
runner_context.call(:nodes).each do |p|
|
|
14
|
+
infov ' * ', p
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module EacGitlabBase0
|
|
5
|
+
module Instances
|
|
6
|
+
module Runners
|
|
7
|
+
class Nodes
|
|
8
|
+
class Members
|
|
9
|
+
runner_with :help, :confirmation do
|
|
10
|
+
arg_opt '-s', '--select', 'Seleciona usuário por "username".', repeat: true
|
|
11
|
+
bool_opt '-c', '--clear', 'Remove todos os usuários não selecionados.'
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def run
|
|
15
|
+
infov 'Nodes', runner_context.call(:nodes).count
|
|
16
|
+
runner_context.call(:nodes).each do |p|
|
|
17
|
+
show_project(p)
|
|
18
|
+
end
|
|
19
|
+
perform_clear
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def show_project(project)
|
|
23
|
+
infov project, project.members.count
|
|
24
|
+
project.members.each do |member|
|
|
25
|
+
infov ' * ', member_label(member)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def member_label(member)
|
|
30
|
+
r = member.to_s
|
|
31
|
+
member_label_color(member).if_present { |v| r = r.send(v) }
|
|
32
|
+
r
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def member_label_color(member)
|
|
36
|
+
return :red if member_remove?(member)
|
|
37
|
+
return :green if member_selected?(member)
|
|
38
|
+
|
|
39
|
+
nil
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def member_remove?(member)
|
|
43
|
+
parsed.clear? && !member_selected?(member)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def member_selected?(member)
|
|
47
|
+
parsed.select.include?(member.username)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def perform_clear
|
|
51
|
+
return unless parsed.clear?
|
|
52
|
+
return unless confirm?('Confirma remoção de membros?')
|
|
53
|
+
|
|
54
|
+
runner_context.call(:nodes).each do |node|
|
|
55
|
+
node.members.each { |member| remove_member(node, member) }
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def remove_member(node, member)
|
|
60
|
+
return unless member_remove?(member)
|
|
61
|
+
|
|
62
|
+
infom "Removing \"#{member}\" from \"#{node}\"..."
|
|
63
|
+
node.remove_member(member.id)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module EacGitlabBase0
|
|
5
|
+
module Instances
|
|
6
|
+
module Runners
|
|
7
|
+
class Nodes
|
|
8
|
+
runner_with :help, :subcommands do
|
|
9
|
+
arg_opt '-p', '--node', repeat: true
|
|
10
|
+
bool_opt '-G', '--no-groups', 'Não mostra grupos'
|
|
11
|
+
subcommands
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
delegate :nodes, to: :nodes_set
|
|
15
|
+
|
|
16
|
+
def input_nodes_ids
|
|
17
|
+
parsed.node
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
def nodes_set_uncached
|
|
23
|
+
r = runner_context.call(:instance).rest_api.nodes_set(*input_nodes_ids)
|
|
24
|
+
r.no_groups = parsed.no_groups
|
|
25
|
+
r
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
data/lib/avm/eac_gitlab_base0.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: avm-eac_gitlab_base0
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.6.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Put here the authors
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2026-03-21 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: avm-eac_github_base0
|
|
@@ -16,50 +16,50 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '0.
|
|
19
|
+
version: '0.4'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '0.
|
|
26
|
+
version: '0.4'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: eac_ruby_utils
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '0.
|
|
34
|
-
- - ">="
|
|
35
|
-
- !ruby/object:Gem::Version
|
|
36
|
-
version: 0.119.2
|
|
33
|
+
version: '0.130'
|
|
37
34
|
type: :runtime
|
|
38
35
|
prerelease: false
|
|
39
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
40
37
|
requirements:
|
|
41
38
|
- - "~>"
|
|
42
39
|
- !ruby/object:Gem::Version
|
|
43
|
-
version: '0.
|
|
44
|
-
- - ">="
|
|
45
|
-
- !ruby/object:Gem::Version
|
|
46
|
-
version: 0.119.2
|
|
40
|
+
version: '0.130'
|
|
47
41
|
- !ruby/object:Gem::Dependency
|
|
48
42
|
name: eac_ruby_gem_support
|
|
49
43
|
requirement: !ruby/object:Gem::Requirement
|
|
50
44
|
requirements:
|
|
51
45
|
- - "~>"
|
|
52
46
|
- !ruby/object:Gem::Version
|
|
53
|
-
version: '0.
|
|
47
|
+
version: '0.12'
|
|
48
|
+
- - ">="
|
|
49
|
+
- !ruby/object:Gem::Version
|
|
50
|
+
version: 0.12.2
|
|
54
51
|
type: :development
|
|
55
52
|
prerelease: false
|
|
56
53
|
version_requirements: !ruby/object:Gem::Requirement
|
|
57
54
|
requirements:
|
|
58
55
|
- - "~>"
|
|
59
56
|
- !ruby/object:Gem::Version
|
|
60
|
-
version: '0.
|
|
61
|
-
|
|
62
|
-
|
|
57
|
+
version: '0.12'
|
|
58
|
+
- - ">="
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: 0.12.2
|
|
61
|
+
description:
|
|
62
|
+
email:
|
|
63
63
|
executables: []
|
|
64
64
|
extensions: []
|
|
65
65
|
extra_rdoc_files: []
|
|
@@ -67,21 +67,28 @@ files:
|
|
|
67
67
|
- lib/avm/eac_gitlab_base0.rb
|
|
68
68
|
- lib/avm/eac_gitlab_base0/api.rb
|
|
69
69
|
- lib/avm/eac_gitlab_base0/api/base_entity.rb
|
|
70
|
+
- lib/avm/eac_gitlab_base0/api/base_entity/validate_response_data.rb
|
|
70
71
|
- lib/avm/eac_gitlab_base0/api/file.rb
|
|
72
|
+
- lib/avm/eac_gitlab_base0/api/forbidden_error.rb
|
|
71
73
|
- lib/avm/eac_gitlab_base0/api/group.rb
|
|
72
74
|
- lib/avm/eac_gitlab_base0/api/member.rb
|
|
73
75
|
- lib/avm/eac_gitlab_base0/api/node.rb
|
|
74
76
|
- lib/avm/eac_gitlab_base0/api/nodes_set.rb
|
|
77
|
+
- lib/avm/eac_gitlab_base0/api/nodes_set/add_by_group_projects_id.rb
|
|
75
78
|
- lib/avm/eac_gitlab_base0/api/project.rb
|
|
76
79
|
- lib/avm/eac_gitlab_base0/api/root.rb
|
|
77
|
-
- lib/avm/eac_gitlab_base0/
|
|
80
|
+
- lib/avm/eac_gitlab_base0/api/tree.rb
|
|
78
81
|
- lib/avm/eac_gitlab_base0/application_scms/base.rb
|
|
79
82
|
- lib/avm/eac_gitlab_base0/instances/base.rb
|
|
83
|
+
- lib/avm/eac_gitlab_base0/instances/runners.rb
|
|
84
|
+
- lib/avm/eac_gitlab_base0/instances/runners/nodes.rb
|
|
85
|
+
- lib/avm/eac_gitlab_base0/instances/runners/nodes/list.rb
|
|
86
|
+
- lib/avm/eac_gitlab_base0/instances/runners/nodes/members.rb
|
|
80
87
|
- lib/avm/eac_gitlab_base0/version.rb
|
|
81
|
-
homepage:
|
|
88
|
+
homepage:
|
|
82
89
|
licenses: []
|
|
83
90
|
metadata: {}
|
|
84
|
-
post_install_message:
|
|
91
|
+
post_install_message:
|
|
85
92
|
rdoc_options: []
|
|
86
93
|
require_paths:
|
|
87
94
|
- lib
|
|
@@ -96,8 +103,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
96
103
|
- !ruby/object:Gem::Version
|
|
97
104
|
version: '0'
|
|
98
105
|
requirements: []
|
|
99
|
-
rubygems_version: 3.
|
|
100
|
-
signing_key:
|
|
106
|
+
rubygems_version: 3.4.19
|
|
107
|
+
signing_key:
|
|
101
108
|
specification_version: 4
|
|
102
109
|
summary: Put here de description.
|
|
103
110
|
test_files: []
|