sem 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,103 +0,0 @@
1
- module Sem
2
- module API
3
- class SharedConfigs < Base
4
- extend Traits::AssociatedWithTeam
5
- extend Traits::AssociatedWithOrg
6
- extend Traits::AssociatedWithProject
7
-
8
- class << self
9
- def name_to_id(org_name, shared_config_name)
10
- info(org_name, shared_config_name)[:id]
11
- end
12
-
13
- def list
14
- org_names = Orgs.list.map { |org| org[:username] }
15
-
16
- org_names.to_a.pmap { |name| list_for_org(name) }.flatten
17
- end
18
-
19
- def info(org_name, shared_config_name)
20
- selected_shared_config = list_for_org(org_name).find do |shared_config|
21
- shared_config[:name] == shared_config_name
22
- end
23
-
24
- if selected_shared_config.nil?
25
- raise Sem::Errors::ResourceNotFound.new("Shared Configuration", [org_name, shared_config_name])
26
- end
27
-
28
- selected_shared_config
29
- end
30
-
31
- def create(org_name, args)
32
- shared_config = api.create_for_org(org_name, args)
33
-
34
- if shared_config.nil?
35
- raise Sem::Errors::ResourceNotCreated.new("Shared Configuration", [org_name, args[:name]])
36
- end
37
-
38
- to_hash(shared_config, org_name)
39
- end
40
-
41
- def update(org_name, shared_config_name, args)
42
- shared_config = info(org_name, shared_config_name)
43
-
44
- shared_config = api.update(shared_config[:id], args)
45
-
46
- if shared_config.nil?
47
- raise Sem::Errors::ResourceNotUpdated.new("Shared Configuration", [org_name, shared_config_name])
48
- end
49
-
50
- to_hash(shared_config, org_name)
51
- end
52
-
53
- def delete(org_name, shared_config_name)
54
- shared_config = info(org_name, shared_config_name)
55
-
56
- api.delete!(shared_config[:id])
57
- rescue SemaphoreClient::Exceptions::RequestFailed
58
- raise Sem::Errors::ResourceNotDeleted.new("Shared Configuration", [org_name, shared_config_name])
59
- end
60
-
61
- def list_env_vars(org_name, shared_config_name)
62
- Sem::API::EnvVars.list_for_shared_config(org_name, shared_config_name)
63
- end
64
-
65
- def list_files(org_name, shared_config_name)
66
- Sem::API::Files.list_for_shared_config(org_name, shared_config_name)
67
- end
68
-
69
- def api
70
- client.shared_configs
71
- end
72
-
73
- def to_hash(shared_config, org)
74
- network_actions = [:config_files_count, :env_vars_count]
75
-
76
- config_files, env_vars = network_actions.pmap do |action|
77
- send(action, shared_config.id)
78
- end
79
-
80
- {
81
- :id => shared_config.id,
82
- :name => shared_config.name,
83
- :org => org,
84
- :config_files => config_files,
85
- :env_vars => env_vars,
86
- :created_at => shared_config.created_at,
87
- :updated_at => shared_config.updated_at
88
- }
89
- end
90
-
91
- private
92
-
93
- def config_files_count(shared_config_id)
94
- client.config_files.list_for_shared_config(shared_config_id).to_a.size
95
- end
96
-
97
- def env_vars_count(shared_config_id)
98
- client.env_vars.list_for_shared_config(shared_config_id).to_a.size
99
- end
100
- end
101
- end
102
- end
103
- end
data/lib/sem/api/teams.rb DELETED
@@ -1,69 +0,0 @@
1
- module Sem
2
- module API
3
- class Teams < Base
4
- extend Traits::AssociatedWithOrg
5
-
6
- class << self
7
- def name_to_id(org_name, team_name)
8
- info(org_name, team_name)[:id]
9
- end
10
-
11
- def list
12
- org_names = Sem::API::Orgs.list.map { |org| org[:username] }
13
-
14
- org_names.to_a.pmap { |name| list_for_org(name) }.flatten
15
- end
16
-
17
- def info(org_name, team_name)
18
- selected_team = list_for_org(org_name).find { |team| team[:name] == team_name }
19
-
20
- raise Sem::Errors::ResourceNotFound.new("Team", [org_name, team_name]) if selected_team.nil?
21
-
22
- selected_team
23
- end
24
-
25
- def create(org_name, args)
26
- team = api.create_for_org(org_name, args)
27
-
28
- raise Sem::Errors::ResourceNotCreated.new("Team", [org_name, args[:name]]) if team.nil?
29
-
30
- to_hash(team, org_name)
31
- end
32
-
33
- def update(org_name, team_name, args)
34
- team = info(org_name, team_name)
35
-
36
- team = api.update(team[:id], args)
37
-
38
- raise Sem::Errors::ResourceNotUpdated.new("Team", [org_name, team_name]) if team.nil?
39
-
40
- to_hash(team, org_name)
41
- end
42
-
43
- def delete(org_name, team_name)
44
- team = info(org_name, team_name)
45
-
46
- api.delete!(team[:id])
47
- rescue SemaphoreClient::Exceptions::RequestFailed
48
- raise Sem::Errors::ResourceNotDeleted.new("Team", [org_name, team_name])
49
- end
50
-
51
- def api
52
- client.teams
53
- end
54
-
55
- def to_hash(team, org)
56
- {
57
- :id => team.id,
58
- :name => team.name,
59
- :org => org,
60
- :permission => team.permission,
61
- :members => client.users.list_for_team(team.id).to_a.size.to_s,
62
- :created_at => team.created_at,
63
- :updated_at => team.updated_at
64
- }
65
- end
66
- end
67
- end
68
- end
69
- end
@@ -1,17 +0,0 @@
1
- module Sem
2
- module API
3
- module Traits
4
- module AssociatedWithOrg
5
- PAGES_PER_CALL = 3
6
-
7
- def list_for_org(org_name)
8
- pages = Sem::Pagination.pages(PAGES_PER_CALL) do |page_index|
9
- api.list_for_org(org_name, :page => page_index).to_a
10
- end
11
-
12
- pages.flatten.pmap { |instance| to_hash(instance, org_name) }
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,29 +0,0 @@
1
- module Sem
2
- module API
3
- module Traits
4
- module AssociatedWithProject
5
- def list_for_project(org_name, project_name)
6
- project = Projects.info(org_name, project_name)
7
-
8
- instances = api.list_for_project(project[:id]).to_a
9
-
10
- instances.map { |instance| to_hash(instance, org_name) }
11
- end
12
-
13
- def add_to_project(org_name, project_name, instance_name)
14
- instance = info(org_name, instance_name)
15
- project = Projects.info(org_name, project_name)
16
-
17
- api.attach_to_project(instance[:id], project[:id])
18
- end
19
-
20
- def remove_from_project(org_name, project_name, instance_name)
21
- instance = info(org_name, instance_name)
22
- project = Projects.info(org_name, project_name)
23
-
24
- api.detach_from_project(instance[:id], project[:id])
25
- end
26
- end
27
- end
28
- end
29
- end
@@ -1,31 +0,0 @@
1
- module Sem
2
- module API
3
- module Traits
4
- module AssociatedWithSharedConfig
5
- def list_for_shared_config(org_name, shared_config_name)
6
- shared_config = SharedConfigs.info(org_name, shared_config_name)
7
-
8
- instances = api.list_for_shared_config(shared_config[:id]).to_a
9
-
10
- instances.map { |instance| to_hash(instance) }
11
- end
12
-
13
- def add_to_shared_config(org_name, shared_config_name, params)
14
- shared_config = SharedConfigs.info(org_name, shared_config_name)
15
-
16
- api.create_for_shared_config(shared_config[:id], params)
17
- end
18
-
19
- def remove_from_shared_config(org_name, shared_config_name, instance_name)
20
- instances = list_for_shared_config(org_name, shared_config_name)
21
-
22
- selected_instance = instances.find { |instance| instance[:name] == instance_name }
23
-
24
- raise Sem::Errors::ResourceNotFound.new("Resource", [org_name, instance_name]) if selected_instance.nil?
25
-
26
- api.delete(selected_instance[:id])
27
- end
28
- end
29
- end
30
- end
31
- end
@@ -1,29 +0,0 @@
1
- module Sem
2
- module API
3
- module Traits
4
- module AssociatedWithTeam
5
- def list_for_team(org_name, team_name)
6
- team_id = Teams.name_to_id(org_name, team_name)
7
-
8
- instances = api.list_for_team(team_id).to_a
9
-
10
- instances.map { |instance| to_hash(instance, org_name) }
11
- end
12
-
13
- def add_to_team(org_name, team_name, instance_name)
14
- instance_id = name_to_id(org_name, instance_name)
15
- team_id = Teams.name_to_id(org_name, team_name)
16
-
17
- api.attach_to_team(instance_id, team_id)
18
- end
19
-
20
- def remove_from_team(org_name, team_name, instance_name)
21
- instance_id = name_to_id(org_name, instance_name)
22
- team_id = Teams.name_to_id(org_name, team_name)
23
-
24
- api.detach_from_team(instance_id, team_id)
25
- end
26
- end
27
- end
28
- end
29
- end
@@ -1,10 +0,0 @@
1
- module Sem
2
- module API
3
- module Traits
4
- require_relative "traits/associated_with_org"
5
- require_relative "traits/associated_with_team"
6
- require_relative "traits/associated_with_shared_config"
7
- require_relative "traits/associated_with_project"
8
- end
9
- end
10
- end
data/lib/sem/api/users.rb DELETED
@@ -1,44 +0,0 @@
1
- module Sem
2
- module API
3
- class Users < Base
4
- extend Traits::AssociatedWithOrg
5
- extend Traits::AssociatedWithTeam
6
-
7
- class << self
8
- def name_to_id(_, name)
9
- name
10
- end
11
-
12
- def list
13
- org_names = Orgs.list.map { |org| org[:username] }
14
-
15
- org_names.to_a.pmap { |name| list_for_org(name) }.flatten
16
- end
17
-
18
- def info(*args)
19
- if args.count == 2
20
- org_name, user_name = args
21
- users = list_for_org(org_name)
22
- else
23
- user_name = args.first
24
- users = list
25
- end
26
-
27
- selected_user = users.find { |user| user[:id] == user_name }
28
-
29
- raise Sem::Errors::ResourceNotFound.new("User", [user_name]) if selected_user.nil?
30
-
31
- selected_user
32
- end
33
-
34
- def api
35
- client.users
36
- end
37
-
38
- def to_hash(user, _ = nil)
39
- { :id => user.username }
40
- end
41
- end
42
- end
43
- end
44
- end