machinery-tool 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/COPYING +674 -0
- data/NEWS +143 -0
- data/bin/machinery +29 -0
- data/helpers/changed_managed_files.sh +32 -0
- data/helpers/filter-packages-for-build.yaml +6 -0
- data/html/assets/arrow_down.png +0 -0
- data/html/assets/arrow_up.png +0 -0
- data/html/assets/bootstrap-popover.js +113 -0
- data/html/assets/bootstrap-tooltip.js +457 -0
- data/html/assets/bootstrap.min.css +5 -0
- data/html/assets/collapse.js +174 -0
- data/html/assets/hogan-3.0.2.min.mustache.js +5 -0
- data/html/assets/jquery-2.1.1.min.js +4 -0
- data/html/assets/logo-changed-managed-files-small.png +0 -0
- data/html/assets/logo-changed-managed-files.png +0 -0
- data/html/assets/logo-config-files-small.png +0 -0
- data/html/assets/logo-config-files.png +0 -0
- data/html/assets/logo-groups-small.png +0 -0
- data/html/assets/logo-groups.png +0 -0
- data/html/assets/logo-os-small.png +0 -0
- data/html/assets/logo-os.png +0 -0
- data/html/assets/logo-packages-small.png +0 -0
- data/html/assets/logo-packages.png +0 -0
- data/html/assets/logo-patterns-small.png +0 -0
- data/html/assets/logo-patterns.png +0 -0
- data/html/assets/logo-repositories-small.png +0 -0
- data/html/assets/logo-repositories.png +0 -0
- data/html/assets/logo-services-small.png +0 -0
- data/html/assets/logo-services.png +0 -0
- data/html/assets/logo-unmanaged-files-small.png +0 -0
- data/html/assets/logo-unmanaged-files.png +0 -0
- data/html/assets/logo-users-small.png +0 -0
- data/html/assets/logo-users.png +0 -0
- data/html/assets/machinery-base.css +5767 -0
- data/html/assets/machinery.css +131 -0
- data/html/assets/machinery.js +148 -0
- data/html/assets/transition.js +59 -0
- data/html/assets/wheels_horizontal.png +0 -0
- data/html/index.html.haml +468 -0
- data/kiwi_helpers/kiwi_export_readme.md +22 -0
- data/kiwi_helpers/merge_users_and_groups.pl.erb +231 -0
- data/kiwi_helpers/unmanaged_files_build_excludes +5 -0
- data/lib/analyze_config_file_diffs_task.rb +130 -0
- data/lib/array.rb +98 -0
- data/lib/build_task.rb +124 -0
- data/lib/changed_rpm_files_helper.rb +96 -0
- data/lib/cli.rb +600 -0
- data/lib/compare_task.rb +68 -0
- data/lib/config.rb +33 -0
- data/lib/config_base.rb +117 -0
- data/lib/config_task.rb +56 -0
- data/lib/constants.rb +24 -0
- data/lib/copy_task.rb +22 -0
- data/lib/current_user.rb +23 -0
- data/lib/deploy_task.rb +89 -0
- data/lib/exceptions.rb +113 -0
- data/lib/generate_html_task.rb +22 -0
- data/lib/helper.rb +22 -0
- data/lib/hint.rb +39 -0
- data/lib/html.rb +103 -0
- data/lib/inspect_task.rb +93 -0
- data/lib/inspector.rb +65 -0
- data/lib/kiwi_config.rb +356 -0
- data/lib/kiwi_export_task.rb +36 -0
- data/lib/list_task.rb +64 -0
- data/lib/local_system.rb +127 -0
- data/lib/logged_cheetah.rb +25 -0
- data/lib/machinery.rb +85 -0
- data/lib/machinery_logger.rb +47 -0
- data/lib/migration.rb +128 -0
- data/lib/mountpoints.rb +72 -0
- data/lib/object.rb +138 -0
- data/lib/os.rb +78 -0
- data/lib/remote_system.rb +114 -0
- data/lib/remove_task.rb +43 -0
- data/lib/renderer.rb +243 -0
- data/lib/renderer_helper.rb +26 -0
- data/lib/rpm.rb +52 -0
- data/lib/scope_mixin.rb +38 -0
- data/lib/show_task.rb +65 -0
- data/lib/system.rb +81 -0
- data/lib/system_description.rb +228 -0
- data/lib/system_description_store.rb +167 -0
- data/lib/system_description_validator.rb +216 -0
- data/lib/tarball.rb +82 -0
- data/lib/ui.rb +74 -0
- data/lib/upgrade_format_task.rb +55 -0
- data/lib/validate_task.rb +23 -0
- data/lib/version.rb +22 -0
- data/lib/zypper.rb +70 -0
- data/man/generated/machinery.1.gz +0 -0
- data/man/generated/machinery.1.html +1056 -0
- data/plugins/docs/changed_managed_files.md +2 -0
- data/plugins/docs/config_files.md +5 -0
- data/plugins/docs/groups.md +2 -0
- data/plugins/docs/os.md +2 -0
- data/plugins/docs/packages.md +2 -0
- data/plugins/docs/patterns.md +5 -0
- data/plugins/docs/repositories.md +24 -0
- data/plugins/docs/services.md +6 -0
- data/plugins/docs/unmanaged_files.md +13 -0
- data/plugins/docs/users.md +3 -0
- data/plugins/inspect/changed_managed_files_inspector.rb +109 -0
- data/plugins/inspect/config_files_inspector.rb +117 -0
- data/plugins/inspect/groups_inspector.rb +46 -0
- data/plugins/inspect/os_inspector.rb +116 -0
- data/plugins/inspect/packages_inspector.rb +46 -0
- data/plugins/inspect/patterns_inspector.rb +67 -0
- data/plugins/inspect/repositories_inspector.rb +107 -0
- data/plugins/inspect/services_inspector.rb +88 -0
- data/plugins/inspect/unmanaged_files_inspector.rb +393 -0
- data/plugins/inspect/users_inspector.rb +87 -0
- data/plugins/model/changed_managed_files_model.rb +29 -0
- data/plugins/model/config_files_model.rb +29 -0
- data/plugins/model/groups_model.rb +26 -0
- data/plugins/model/os_model.rb +20 -0
- data/plugins/model/packages_model.rb +26 -0
- data/plugins/model/patterns_model.rb +26 -0
- data/plugins/model/repositories_model.rb +26 -0
- data/plugins/model/services_model.rb +48 -0
- data/plugins/model/unmanaged_files_model.rb +29 -0
- data/plugins/model/users_model.rb +26 -0
- data/plugins/schema/v1/system-description-changed-managed-files.schema.json +83 -0
- data/plugins/schema/v1/system-description-config-files.schema.json +83 -0
- data/plugins/schema/v1/system-description-groups.schema.json +30 -0
- data/plugins/schema/v1/system-description-os.schema.json +21 -0
- data/plugins/schema/v1/system-description-packages.schema.json +34 -0
- data/plugins/schema/v1/system-description-patterns.schema.json +24 -0
- data/plugins/schema/v1/system-description-repositories.schema.json +41 -0
- data/plugins/schema/v1/system-description-services.schema.json +30 -0
- data/plugins/schema/v1/system-description-unmanaged-files.schema.json +105 -0
- data/plugins/schema/v1/system-description-users.schema.json +61 -0
- data/plugins/schema/v2/system-description-changed-managed-files.schema.json +92 -0
- data/plugins/schema/v2/system-description-config-files.schema.json +92 -0
- data/plugins/schema/v2/system-description-groups.schema.json +30 -0
- data/plugins/schema/v2/system-description-os.schema.json +21 -0
- data/plugins/schema/v2/system-description-packages.schema.json +34 -0
- data/plugins/schema/v2/system-description-patterns.schema.json +24 -0
- data/plugins/schema/v2/system-description-repositories.schema.json +41 -0
- data/plugins/schema/v2/system-description-services.schema.json +30 -0
- data/plugins/schema/v2/system-description-unmanaged-files.schema.json +138 -0
- data/plugins/schema/v2/system-description-users.schema.json +61 -0
- data/plugins/show/changed_managed_files_renderer.rb +46 -0
- data/plugins/show/config_files_renderer.rb +62 -0
- data/plugins/show/groups_renderer.rb +36 -0
- data/plugins/show/os_renderer.rb +31 -0
- data/plugins/show/packages_renderer.rb +32 -0
- data/plugins/show/patterns_renderer.rb +32 -0
- data/plugins/show/repositories_renderer.rb +38 -0
- data/plugins/show/services_renderer.rb +32 -0
- data/plugins/show/unmanaged_files_renderer.rb +42 -0
- data/plugins/show/users_renderer.rb +35 -0
- data/schema/migrations/migrate1to2.rb +56 -0
- data/schema/v1/system-description-global.schema.json +31 -0
- data/schema/v2/system-description-global.schema.json +31 -0
- metadata +370 -0
@@ -0,0 +1,87 @@
|
|
1
|
+
# Copyright (c) 2013-2014 SUSE LLC
|
2
|
+
#
|
3
|
+
# This program is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of version 3 of the GNU General Public License as
|
5
|
+
# published by the Free Software Foundation.
|
6
|
+
#
|
7
|
+
# This program is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
# GNU General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU General Public License
|
13
|
+
# along with this program; if not, contact SUSE LLC.
|
14
|
+
#
|
15
|
+
# To contact SUSE about this file by physical or electronic mail,
|
16
|
+
# you may find current contact information at www.suse.com
|
17
|
+
|
18
|
+
class UsersInspector < Inspector
|
19
|
+
def inspect(system, description, options = {})
|
20
|
+
passwd = system.read_file("/etc/passwd")
|
21
|
+
shadow = system.read_file("/etc/shadow")
|
22
|
+
|
23
|
+
users = passwd ? parse_users(passwd, shadow) : []
|
24
|
+
|
25
|
+
description.users = UsersScope.new(users.sort_by(&:name))
|
26
|
+
"Found #{users.size} users."
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def parse_users(passwd, shadow)
|
32
|
+
users = passwd.lines.map { |l| l.split(":").first }
|
33
|
+
|
34
|
+
users.map do |user|
|
35
|
+
attributes = passwd_attributes(passwd, user)
|
36
|
+
attributes.merge!(shadow_attributes(shadow, user)) if shadow
|
37
|
+
|
38
|
+
User.new(attributes)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def passwd_attributes(passwd, user)
|
43
|
+
line = passwd.lines.find { |l| l.start_with?("#{user}:") }
|
44
|
+
user, passwd, uid, gid, comment, home, shell = line.split(":").map(&:chomp)
|
45
|
+
|
46
|
+
# In case the inspected machine uses NIS, /etc/passwd will contain a
|
47
|
+
# placeholder entry like this:
|
48
|
+
#
|
49
|
+
# +::::::
|
50
|
+
#
|
51
|
+
# We need to handle it correctly, which means setting non-string attributes
|
52
|
+
# to nil.
|
53
|
+
uid = Machinery::is_int?(uid) ? uid.to_i : nil
|
54
|
+
gid = Machinery::is_int?(gid) ? gid.to_i : nil
|
55
|
+
|
56
|
+
{
|
57
|
+
name: user,
|
58
|
+
password: passwd,
|
59
|
+
uid: uid,
|
60
|
+
gid: gid,
|
61
|
+
comment: comment,
|
62
|
+
home: home,
|
63
|
+
shell: shell
|
64
|
+
}
|
65
|
+
end
|
66
|
+
|
67
|
+
def shadow_attributes(shadow, user)
|
68
|
+
line = shadow.lines.find { |l| l.start_with?("#{user}:") }
|
69
|
+
if line
|
70
|
+
user, passwd, changed, min, max, warn, inactive, expire = line.split(":").map(&:chomp)
|
71
|
+
|
72
|
+
result = {
|
73
|
+
encrypted_password: passwd
|
74
|
+
}
|
75
|
+
result[:last_changed_date] = changed.to_i if !changed.empty?
|
76
|
+
result[:min_days] = min.to_i if !min.empty?
|
77
|
+
result[:max_days] = max.to_i if !max.empty?
|
78
|
+
result[:warn_days] = warn.to_i if !warn.empty?
|
79
|
+
result[:disable_days] = inactive.to_i if !inactive.empty?
|
80
|
+
result[:disabled_date] = expire.to_i if !expire.empty?
|
81
|
+
|
82
|
+
result
|
83
|
+
else
|
84
|
+
{}
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# Copyright (c) 2013-2014 SUSE LLC
|
2
|
+
#
|
3
|
+
# This program is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of version 3 of the GNU General Public License as
|
5
|
+
# published by the Free Software Foundation.
|
6
|
+
#
|
7
|
+
# This program is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
# GNU General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU General Public License
|
13
|
+
# along with this program; if not, contact SUSE LLC.
|
14
|
+
#
|
15
|
+
# To contact SUSE about this file by physical or electronic mail,
|
16
|
+
# you may find current contact information at www.suse.com
|
17
|
+
|
18
|
+
|
19
|
+
class ChangedManagedFile < Machinery::Object
|
20
|
+
end
|
21
|
+
|
22
|
+
class ChangedManagedFileList < Machinery::Array
|
23
|
+
has_elements class: ChangedManagedFile
|
24
|
+
end
|
25
|
+
|
26
|
+
class ChangedManagedFilesScope < Machinery::Object
|
27
|
+
include Machinery::ScopeMixin
|
28
|
+
has_property :files, class: ChangedManagedFileList
|
29
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# Copyright (c) 2013-2014 SUSE LLC
|
2
|
+
#
|
3
|
+
# This program is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of version 3 of the GNU General Public License as
|
5
|
+
# published by the Free Software Foundation.
|
6
|
+
#
|
7
|
+
# This program is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
# GNU General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU General Public License
|
13
|
+
# along with this program; if not, contact SUSE LLC.
|
14
|
+
#
|
15
|
+
# To contact SUSE about this file by physical or electronic mail,
|
16
|
+
# you may find current contact information at www.suse.com
|
17
|
+
|
18
|
+
|
19
|
+
class ConfigFile < Machinery::Object
|
20
|
+
end
|
21
|
+
|
22
|
+
class ConfigFileList < Machinery::Array
|
23
|
+
has_elements class: ConfigFile
|
24
|
+
end
|
25
|
+
|
26
|
+
class ConfigFilesScope < Machinery::Object
|
27
|
+
include Machinery::ScopeMixin
|
28
|
+
has_property :files, class: ConfigFileList
|
29
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# Copyright (c) 2013-2014 SUSE LLC
|
2
|
+
#
|
3
|
+
# This program is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of version 3 of the GNU General Public License as
|
5
|
+
# published by the Free Software Foundation.
|
6
|
+
#
|
7
|
+
# This program is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
# GNU General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU General Public License
|
13
|
+
# along with this program; if not, contact SUSE LLC.
|
14
|
+
#
|
15
|
+
# To contact SUSE about this file by physical or electronic mail,
|
16
|
+
# you may find current contact information at www.suse.com
|
17
|
+
|
18
|
+
|
19
|
+
class Group < Machinery::Object
|
20
|
+
end
|
21
|
+
|
22
|
+
class GroupsScope < Machinery::Array
|
23
|
+
include Machinery::ScopeMixin
|
24
|
+
|
25
|
+
has_elements class: Group
|
26
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# Copyright (c) 2013-2014 SUSE LLC
|
2
|
+
#
|
3
|
+
# This program is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of version 3 of the GNU General Public License as
|
5
|
+
# published by the Free Software Foundation.
|
6
|
+
#
|
7
|
+
# This program is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
# GNU General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU General Public License
|
13
|
+
# along with this program; if not, contact SUSE LLC.
|
14
|
+
#
|
15
|
+
# To contact SUSE about this file by physical or electronic mail,
|
16
|
+
# you may find current contact information at www.suse.com
|
17
|
+
|
18
|
+
class OsScope < Machinery::Object
|
19
|
+
include Machinery::ScopeMixin
|
20
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# Copyright (c) 2013-2014 SUSE LLC
|
2
|
+
#
|
3
|
+
# This program is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of version 3 of the GNU General Public License as
|
5
|
+
# published by the Free Software Foundation.
|
6
|
+
#
|
7
|
+
# This program is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
# GNU General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU General Public License
|
13
|
+
# along with this program; if not, contact SUSE LLC.
|
14
|
+
#
|
15
|
+
# To contact SUSE about this file by physical or electronic mail,
|
16
|
+
# you may find current contact information at www.suse.com
|
17
|
+
|
18
|
+
|
19
|
+
class Package < Machinery::Object
|
20
|
+
end
|
21
|
+
|
22
|
+
class PackagesScope < Machinery::Array
|
23
|
+
include Machinery::ScopeMixin
|
24
|
+
|
25
|
+
has_elements class: Package
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# Copyright (c) 2013-2014 SUSE LLC
|
2
|
+
#
|
3
|
+
# This program is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of version 3 of the GNU General Public License as
|
5
|
+
# published by the Free Software Foundation.
|
6
|
+
#
|
7
|
+
# This program is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
# GNU General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU General Public License
|
13
|
+
# along with this program; if not, contact SUSE LLC.
|
14
|
+
#
|
15
|
+
# To contact SUSE about this file by physical or electronic mail,
|
16
|
+
# you may find current contact information at www.suse.com
|
17
|
+
|
18
|
+
|
19
|
+
class Pattern < Machinery::Object
|
20
|
+
end
|
21
|
+
|
22
|
+
class PatternsScope < Machinery::Array
|
23
|
+
include Machinery::ScopeMixin
|
24
|
+
|
25
|
+
has_elements class: Pattern
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# Copyright (c) 2013-2014 SUSE LLC
|
2
|
+
#
|
3
|
+
# This program is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of version 3 of the GNU General Public License as
|
5
|
+
# published by the Free Software Foundation.
|
6
|
+
#
|
7
|
+
# This program is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
# GNU General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU General Public License
|
13
|
+
# along with this program; if not, contact SUSE LLC.
|
14
|
+
#
|
15
|
+
# To contact SUSE about this file by physical or electronic mail,
|
16
|
+
# you may find current contact information at www.suse.com
|
17
|
+
|
18
|
+
|
19
|
+
class Repository < Machinery::Object
|
20
|
+
end
|
21
|
+
|
22
|
+
class RepositoriesScope < Machinery::Array
|
23
|
+
include Machinery::ScopeMixin
|
24
|
+
|
25
|
+
has_elements class: Repository
|
26
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# Copyright (c) 2013-2014 SUSE LLC
|
2
|
+
#
|
3
|
+
# This program is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of version 3 of the GNU General Public License as
|
5
|
+
# published by the Free Software Foundation.
|
6
|
+
#
|
7
|
+
# This program is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
# GNU General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU General Public License
|
13
|
+
# along with this program; if not, contact SUSE LLC.
|
14
|
+
#
|
15
|
+
# To contact SUSE about this file by physical or electronic mail,
|
16
|
+
# you may find current contact information at www.suse.com
|
17
|
+
|
18
|
+
|
19
|
+
class Service < Machinery::Object
|
20
|
+
end
|
21
|
+
|
22
|
+
class ServiceList < Machinery::Array
|
23
|
+
has_elements class: Service
|
24
|
+
end
|
25
|
+
|
26
|
+
class ServicesScope < Machinery::Object
|
27
|
+
include Machinery::ScopeMixin
|
28
|
+
has_property :services, class: ServiceList
|
29
|
+
|
30
|
+
def compare_with(other)
|
31
|
+
if self.init_system != other.init_system
|
32
|
+
[self, other, nil]
|
33
|
+
else
|
34
|
+
[
|
35
|
+
self.services - other.services,
|
36
|
+
other.services - self.services,
|
37
|
+
self.services & other.services
|
38
|
+
].map do |services|
|
39
|
+
if !services.empty?
|
40
|
+
self.class.new(:init_system => self.init_system, :services => services)
|
41
|
+
else
|
42
|
+
nil
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# Copyright (c) 2013-2014 SUSE LLC
|
2
|
+
#
|
3
|
+
# This program is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of version 3 of the GNU General Public License as
|
5
|
+
# published by the Free Software Foundation.
|
6
|
+
#
|
7
|
+
# This program is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
# GNU General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU General Public License
|
13
|
+
# along with this program; if not, contact SUSE LLC.
|
14
|
+
#
|
15
|
+
# To contact SUSE about this file by physical or electronic mail,
|
16
|
+
# you may find current contact information at www.suse.com
|
17
|
+
|
18
|
+
|
19
|
+
class UnmanagedFile < Machinery::Object
|
20
|
+
end
|
21
|
+
|
22
|
+
class UnmanagedFileList < Machinery::Array
|
23
|
+
has_elements class: UnmanagedFile
|
24
|
+
end
|
25
|
+
|
26
|
+
class UnmanagedFilesScope < Machinery::Object
|
27
|
+
include Machinery::ScopeMixin
|
28
|
+
has_property :files, class: UnmanagedFileList
|
29
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# Copyright (c) 2013-2014 SUSE LLC
|
2
|
+
#
|
3
|
+
# This program is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of version 3 of the GNU General Public License as
|
5
|
+
# published by the Free Software Foundation.
|
6
|
+
#
|
7
|
+
# This program is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
# GNU General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU General Public License
|
13
|
+
# along with this program; if not, contact SUSE LLC.
|
14
|
+
#
|
15
|
+
# To contact SUSE about this file by physical or electronic mail,
|
16
|
+
# you may find current contact information at www.suse.com
|
17
|
+
|
18
|
+
|
19
|
+
class User < Machinery::Object
|
20
|
+
end
|
21
|
+
|
22
|
+
class UsersScope < Machinery::Array
|
23
|
+
include Machinery::ScopeMixin
|
24
|
+
|
25
|
+
has_elements class: User
|
26
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
{
|
2
|
+
"$schema": "http://json-schema.org/draft-04/schema#",
|
3
|
+
|
4
|
+
"type": "array",
|
5
|
+
"items" : {
|
6
|
+
"type": "object",
|
7
|
+
"required": ["name", "package_name", "package_version"],
|
8
|
+
"properties": {
|
9
|
+
"name": {
|
10
|
+
"type": "string"
|
11
|
+
},
|
12
|
+
"package_name": {
|
13
|
+
"type": "string",
|
14
|
+
"minLength": 1
|
15
|
+
},
|
16
|
+
"package_version": {
|
17
|
+
"type": "string",
|
18
|
+
"minLength": 1
|
19
|
+
}
|
20
|
+
},
|
21
|
+
"oneOf": [
|
22
|
+
{ "$ref": "#/definitions/file_changed" },
|
23
|
+
{ "$ref": "#/definitions/file_error" }
|
24
|
+
]
|
25
|
+
},
|
26
|
+
"definitions": {
|
27
|
+
"file_changed": {
|
28
|
+
"required": ["status"],
|
29
|
+
"properties": {
|
30
|
+
"status": {
|
31
|
+
"enum": ["changed"]
|
32
|
+
}
|
33
|
+
},
|
34
|
+
"oneOf": [
|
35
|
+
{ "$ref": "#/definitions/file_changed_modified" },
|
36
|
+
{ "$ref": "#/definitions/file_changed_deleted" }
|
37
|
+
]
|
38
|
+
},
|
39
|
+
"file_changed_modified": {
|
40
|
+
"required": ["changes", "mode", "user", "group"],
|
41
|
+
"properties": {
|
42
|
+
"changes": {
|
43
|
+
"type": "array",
|
44
|
+
"items": {
|
45
|
+
"enum": ["mode", "md5", "group", "user", "replaced"]
|
46
|
+
},
|
47
|
+
"minItems": 1
|
48
|
+
},
|
49
|
+
"mode": {
|
50
|
+
"type": "string",
|
51
|
+
"pattern": "^[0-4]?[0-7]{3}$"
|
52
|
+
},
|
53
|
+
"user": {
|
54
|
+
"type": "string",
|
55
|
+
"minLength": 1
|
56
|
+
},
|
57
|
+
"group": {
|
58
|
+
"type": "string",
|
59
|
+
"minLength": 1
|
60
|
+
}
|
61
|
+
}
|
62
|
+
},
|
63
|
+
"file_changed_deleted": {
|
64
|
+
"required": ["changes"],
|
65
|
+
"properties": {
|
66
|
+
"changes": {
|
67
|
+
"enum": [["deleted"]]
|
68
|
+
}
|
69
|
+
}
|
70
|
+
},
|
71
|
+
"file_error": {
|
72
|
+
"required": ["status", "error_message"],
|
73
|
+
"properties": {
|
74
|
+
"status": {
|
75
|
+
"enum": ["error"]
|
76
|
+
},
|
77
|
+
"error_message": {
|
78
|
+
"type": "string"
|
79
|
+
}
|
80
|
+
}
|
81
|
+
}
|
82
|
+
}
|
83
|
+
}
|