Class: OsCtld::Repository
Defined Under Namespace
Classes: Image
Constant Summary
collapse
- USER =
'repository'.freeze
- UID =
Etc.getpwnam(USER).uid
Instance Attribute Summary collapse
Instance Method Summary
collapse
#define_assets
#acquire_manipulation_lock, #init_manipulable, #is_being_manipulated?, #manipulate, #manipulated_by, #release_manipulation_lock
Methods included from Lockable
#exclusively, included, #inclusively, #init_lock, #lock, #unlock
Constructor Details
#initialize(pool, name, load: true) ⇒ Repository
Returns a new instance of Repository.
18
19
20
21
22
23
24
25
26
|
# File 'lib/osctld/repository.rb', line 18
def initialize(pool, name, load: true)
init_lock
init_manipulable
@pool = pool
@name = name
@enabled = true
@attrs = Attributes.new
load_config if load
end
|
Instance Attribute Details
#attrs ⇒ Object
Returns the value of attribute attrs.
16
17
18
|
# File 'lib/osctld/repository.rb', line 16
def attrs
@attrs
end
|
#name ⇒ Object
Returns the value of attribute name.
16
17
18
|
# File 'lib/osctld/repository.rb', line 16
def name
@name
end
|
#pool ⇒ Object
Returns the value of attribute pool.
16
17
18
|
# File 'lib/osctld/repository.rb', line 16
def pool
@pool
end
|
#state ⇒ Object
Returns the value of attribute state.
127
128
129
|
# File 'lib/osctld/repository.rb', line 127
def state
@state
end
|
#url ⇒ Object
Returns the value of attribute url.
16
17
18
|
# File 'lib/osctld/repository.rb', line 16
def url
@url
end
|
Instance Method Details
#assets ⇒ Object
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
# File 'lib/osctld/repository.rb', line 37
def assets
define_assets do |add|
add.file(
config_path,
desc: 'Configuration file',
user: 0,
group: 0,
mode: 0o400
)
add.directory(
cache_path,
desc: 'Local cache',
user: UID,
group: 0,
mode: 0o700
)
end
end
|
#cache_path ⇒ Object
117
118
119
|
# File 'lib/osctld/repository.rb', line 117
def cache_path
File.join(pool.repo_path, name)
end
|
#config_path ⇒ Object
113
114
115
|
# File 'lib/osctld/repository.rb', line 113
def config_path
File.join(pool.conf_path, 'repository', "#{name}.yml")
end
|
32
33
34
35
|
# File 'lib/osctld/repository.rb', line 32
def configure(url)
@url = url
save_config
end
|
#disable ⇒ Object
69
70
71
72
|
# File 'lib/osctld/repository.rb', line 69
def disable
@enabled = false
save_config
end
|
#disabled? ⇒ Boolean
60
61
62
|
# File 'lib/osctld/repository.rb', line 60
def disabled?
!enabled?
end
|
#enable ⇒ Object
64
65
66
67
|
# File 'lib/osctld/repository.rb', line 64
def enable
@enabled = true
save_config
end
|
#enabled? ⇒ Boolean
56
57
58
|
# File 'lib/osctld/repository.rb', line 56
def enabled?
@enabled
end
|
#id ⇒ Object
28
29
30
|
# File 'lib/osctld/repository.rb', line 28
def id
name
end
|
#images ⇒ Object
109
110
111
|
# File 'lib/osctld/repository.rb', line 109
def images
end
|
#load_config ⇒ Object
129
130
131
132
133
134
135
|
# File 'lib/osctld/repository.rb', line 129
def load_config
cfg = OsCtl::Lib::ConfigFile.load_yaml_file(config_path)
@url = cfg['url']
@enabled = cfg['enabled']
@attrs = Attributes.load(cfg['attrs'] || {})
end
|
#manipulation_resource ⇒ Object
121
122
123
|
# File 'lib/osctld/repository.rb', line 121
def manipulation_resource
['repository', "#{pool.name}:#{name}"]
end
|
#save_config ⇒ Object
137
138
139
140
141
142
143
144
145
146
147
|
# File 'lib/osctld/repository.rb', line 137
def save_config
File.open(config_path, 'w', 0o400) do |f|
f.write(OsCtl::Lib::ConfigFile.dump_yaml({
'url' => url,
'enabled' => enabled?,
'attrs' => attrs.dump
}))
end
File.chown(0, 0, config_path)
end
|
#set(opts) ⇒ Object
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
# File 'lib/osctld/repository.rb', line 76
def set(opts)
opts.each do |k, v|
case k
when :url
@url = v
when :attrs
attrs.update(v)
else
raise "unsupported option '#{k}'"
end
end
save_config
end
|
#unset(opts) ⇒ Object
95
96
97
98
99
100
101
102
103
104
105
106
107
|
# File 'lib/osctld/repository.rb', line 95
def unset(opts)
opts.each do |k, v|
case k
when :attrs
v.each { |attr| attrs.unset(attr) }
else
raise "unsupported option '#{k}'"
end
end
save_config
end
|