cloud-templates 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +4 -0
- data/.rubocop.yml +1 -0
- data/Rakefile +1 -1
- data/bin/cloud-templates-runner.rb +5 -0
- data/cloud-templates.gemspec +9 -4
- data/examples/lib/user_directory.rb +0 -10
- data/examples/lib/user_directory/artifacts.rb +8 -0
- data/examples/lib/user_directory/artifacts/catalogized.rb +8 -7
- data/examples/lib/user_directory/artifacts/group.rb +27 -30
- data/examples/lib/user_directory/artifacts/ided.rb +8 -7
- data/examples/lib/user_directory/artifacts/organization.rb +10 -11
- data/examples/lib/user_directory/artifacts/pathed.rb +17 -17
- data/examples/lib/user_directory/artifacts/person.rb +20 -15
- data/examples/lib/user_directory/artifacts/team.rb +26 -21
- data/examples/lib/user_directory/artifacts/unit.rb +15 -17
- data/examples/lib/user_directory/artifacts/user.rb +26 -23
- data/examples/lib/user_directory/render.rb +8 -0
- data/examples/lib/user_directory/render/etc.rb +2 -0
- data/examples/lib/user_directory/render/etc/artifact_view.rb +2 -2
- data/examples/lib/user_directory/render/etc/composite_view.rb +1 -2
- data/examples/lib/user_directory/render/etc/group_view.rb +3 -3
- data/examples/lib/user_directory/render/etc/person_view.rb +2 -2
- data/examples/lib/user_directory/render/etc/registry.rb +4 -6
- data/examples/lib/user_directory/render/etc/user_view.rb +2 -3
- data/examples/lib/user_directory/render/ldap.rb +2 -0
- data/examples/lib/user_directory/render/ldap/artifact_view.rb +3 -4
- data/examples/lib/user_directory/render/ldap/composite_view.rb +3 -4
- data/examples/lib/user_directory/render/ldap/group_view.rb +3 -4
- data/examples/lib/user_directory/render/ldap/organization_view.rb +3 -4
- data/examples/lib/user_directory/render/ldap/person_view.rb +3 -4
- data/examples/lib/user_directory/render/ldap/registry.rb +3 -4
- data/examples/lib/user_directory/render/ldap/unit_view.rb +3 -4
- data/examples/lib/user_directory/render/ldap/user_view.rb +3 -4
- data/examples/lib/user_directory/utils.rb +1 -1
- data/examples/spec/user_directory_spec.rb +24 -25
- data/lib/aws/templates.rb +0 -8
- data/lib/aws/templates/artifact.rb +20 -12
- data/lib/aws/templates/cli.rb +14 -0
- data/lib/aws/templates/cli/formatter.rb +21 -0
- data/lib/aws/templates/cli/formatter/json.rb +20 -0
- data/lib/aws/templates/cli/interface.rb +92 -0
- data/lib/aws/templates/composite.rb +6 -9
- data/lib/aws/templates/exception.rb +8 -0
- data/lib/aws/templates/exception/nested_parameter_exception.rb +19 -0
- data/lib/aws/templates/exception/option_error.rb +14 -0
- data/lib/aws/templates/exception/option_scalar_on_the_way.rb +26 -0
- data/lib/aws/templates/exception/option_should_be_recursive.rb +20 -0
- data/lib/aws/templates/exception/option_value_deleted.rb +22 -0
- data/lib/aws/templates/exception/parameter_already_exist.rb +26 -0
- data/lib/aws/templates/exception/parameter_exception.rb +26 -0
- data/lib/aws/templates/exception/parameter_getter_is_not_defined.rb +23 -0
- data/lib/aws/templates/exception/parameter_method_name_conflict.rb +26 -0
- data/lib/aws/templates/exception/parameter_specification_is_invalid.rb +30 -0
- data/lib/aws/templates/exception/parameter_value_invalid.rb +37 -0
- data/lib/aws/templates/exception/parametrized_dsl_error.rb +14 -0
- data/lib/aws/templates/exception/view_not_found.rb +26 -0
- data/lib/aws/templates/help.rb +43 -0
- data/lib/aws/templates/help/aggregate.rb +74 -0
- data/lib/aws/templates/help/dsl.rb +30 -0
- data/lib/aws/templates/help/provider.rb +15 -0
- data/lib/aws/templates/help/rdoc.rb +105 -0
- data/lib/aws/templates/help/rdoc/artifact.rb +50 -0
- data/lib/aws/templates/help/rdoc/composite.rb +20 -0
- data/lib/aws/templates/help/rdoc/contextualized.rb +12 -0
- data/lib/aws/templates/help/rdoc/contextualized/filter.rb +19 -0
- data/lib/aws/templates/help/rdoc/contextualized/filters.rb +14 -0
- data/lib/aws/templates/help/rdoc/contextualized/filters/add.rb +21 -0
- data/lib/aws/templates/help/rdoc/contextualized/filters/chain.rb +33 -0
- data/lib/aws/templates/help/rdoc/contextualized/filters/copy.rb +23 -0
- data/lib/aws/templates/help/rdoc/contextualized/filters/identity.rb +23 -0
- data/lib/aws/templates/help/rdoc/contextualized/filters/override.rb +29 -0
- data/lib/aws/templates/help/rdoc/contextualized/filters/proxy.rb +28 -0
- data/lib/aws/templates/help/rdoc/contextualized/filters/recursive_schema_filter.rb +28 -0
- data/lib/aws/templates/help/rdoc/contextualized/filters/remove.rb +21 -0
- data/lib/aws/templates/help/rdoc/contextualized/filters/scoped.rb +29 -0
- data/lib/aws/templates/help/rdoc/contextualized/provider.rb +28 -0
- data/lib/aws/templates/help/rdoc/default.rb +12 -0
- data/lib/aws/templates/help/rdoc/default/definition.rb +89 -0
- data/lib/aws/templates/help/rdoc/default/provider.rb +25 -0
- data/lib/aws/templates/help/rdoc/dsl.rb +20 -0
- data/lib/aws/templates/help/rdoc/inheritable.rb +48 -0
- data/lib/aws/templates/help/rdoc/parametrized.rb +12 -0
- data/lib/aws/templates/help/rdoc/parametrized/constraint.rb +31 -0
- data/lib/aws/templates/help/rdoc/parametrized/constraints.rb +14 -0
- data/lib/aws/templates/help/rdoc/parametrized/constraints/all_of.rb +39 -0
- data/lib/aws/templates/help/rdoc/parametrized/constraints/condition.rb +44 -0
- data/lib/aws/templates/help/rdoc/parametrized/constraints/depends_on_value.rb +41 -0
- data/lib/aws/templates/help/rdoc/parametrized/constraints/enum.rb +33 -0
- data/lib/aws/templates/help/rdoc/parametrized/constraints/matches.rb +27 -0
- data/lib/aws/templates/help/rdoc/parametrized/constraints/not_nil.rb +27 -0
- data/lib/aws/templates/help/rdoc/parametrized/constraints/requires.rb +33 -0
- data/lib/aws/templates/help/rdoc/parametrized/constraints/satisfies_condition.rb +28 -0
- data/lib/aws/templates/help/rdoc/parametrized/getter.rb +17 -0
- data/lib/aws/templates/help/rdoc/parametrized/getters.rb +14 -0
- data/lib/aws/templates/help/rdoc/parametrized/nested.rb +32 -0
- data/lib/aws/templates/help/rdoc/parametrized/parameter.rb +55 -0
- data/lib/aws/templates/help/rdoc/parametrized/provider.rb +32 -0
- data/lib/aws/templates/help/rdoc/parametrized/transformation.rb +17 -0
- data/lib/aws/templates/help/rdoc/parametrized/transformations.rb +14 -0
- data/lib/aws/templates/help/rdoc/parametrized/transformations/as_boolean.rb +25 -0
- data/lib/aws/templates/help/rdoc/parametrized/transformations/as_chain.rb +34 -0
- data/lib/aws/templates/help/rdoc/parametrized/transformations/as_hash.rb +40 -0
- data/lib/aws/templates/help/rdoc/parametrized/transformations/as_integer.rb +26 -0
- data/lib/aws/templates/help/rdoc/parametrized/transformations/as_list.rb +32 -0
- data/lib/aws/templates/help/rdoc/parametrized/transformations/as_module.rb +25 -0
- data/lib/aws/templates/help/rdoc/parametrized/transformations/as_object.rb +32 -0
- data/lib/aws/templates/help/rdoc/parametrized/transformations/as_rendered.rb +28 -0
- data/lib/aws/templates/help/rdoc/parametrized/transformations/as_string.rb +25 -0
- data/lib/aws/templates/help/rdoc/provider.rb +20 -0
- data/lib/aws/templates/help/rdoc/routing.rb +104 -0
- data/lib/aws/templates/help/rdoc/texting.rb +42 -0
- data/lib/aws/templates/processor.rb +53 -0
- data/lib/aws/templates/processor/handler.rb +104 -0
- data/lib/aws/templates/processor/registry.rb +74 -0
- data/lib/aws/templates/processor/routing.rb +27 -0
- data/lib/aws/templates/render.rb +27 -25
- data/lib/aws/templates/render/basic_view.rb +47 -0
- data/lib/aws/templates/render/utils.rb +14 -0
- data/lib/aws/templates/render/utils/base_type_views.rb +12 -19
- data/lib/aws/templates/render/utils/inspect.rb +2 -4
- data/lib/aws/templates/render/utils/stringify.rb +2 -5
- data/lib/aws/templates/render/view.rb +3 -100
- data/lib/aws/templates/utils.rb +39 -15
- data/lib/aws/templates/utils/artifact_storage.rb +2 -3
- data/lib/aws/templates/utils/{named.rb → as_named.rb} +2 -3
- data/lib/aws/templates/utils/autoload.rb +224 -0
- data/lib/aws/templates/utils/contextualized.rb +8 -17
- data/lib/aws/templates/utils/contextualized/filter.rb +62 -0
- data/lib/aws/templates/utils/contextualized/filter/add.rb +67 -0
- data/lib/aws/templates/utils/contextualized/filter/chain.rb +56 -0
- data/lib/aws/templates/utils/contextualized/filter/copy.rb +38 -0
- data/lib/aws/templates/utils/contextualized/filter/dsl.rb +50 -0
- data/lib/aws/templates/utils/contextualized/filter/identity.rb +45 -0
- data/lib/aws/templates/utils/contextualized/filter/override.rb +62 -0
- data/lib/aws/templates/utils/contextualized/filter/proxy.rb +29 -0
- data/lib/aws/templates/utils/contextualized/filter/recursive_schema_filter.rb +46 -0
- data/lib/aws/templates/utils/contextualized/filter/remove.rb +66 -0
- data/lib/aws/templates/utils/contextualized/filter/scoped.rb +42 -0
- data/lib/aws/templates/utils/contextualized/refinements.rb +51 -0
- data/lib/aws/templates/utils/default.rb +258 -50
- data/lib/aws/templates/utils/dependency.rb +7 -6
- data/lib/aws/templates/utils/dependency/refinements.rb +80 -0
- data/lib/aws/templates/utils/dependent.rb +6 -3
- data/lib/aws/templates/utils/guarded.rb +30 -0
- data/lib/aws/templates/utils/inheritable.rb +21 -16
- data/lib/aws/templates/utils/inspectable.rb +4 -4
- data/lib/aws/templates/utils/late_bound.rb +2 -2
- data/lib/aws/templates/utils/memoized.rb +2 -0
- data/lib/aws/templates/utils/options.rb +49 -35
- data/lib/aws/templates/utils/parametrized.rb +32 -25
- data/lib/aws/templates/utils/parametrized/constraint.rb +95 -0
- data/lib/aws/templates/utils/parametrized/constraint/all_of.rb +51 -0
- data/lib/aws/templates/utils/parametrized/constraint/condition.rb +93 -0
- data/lib/aws/templates/utils/parametrized/constraint/depends_on_value.rb +60 -0
- data/lib/aws/templates/utils/parametrized/constraint/dsl.rb +86 -0
- data/lib/aws/templates/utils/parametrized/constraint/enum.rb +45 -0
- data/lib/aws/templates/utils/parametrized/constraint/matches.rb +44 -0
- data/lib/aws/templates/utils/parametrized/constraint/not_nil.rb +38 -0
- data/lib/aws/templates/utils/parametrized/constraint/requires.rb +54 -0
- data/lib/aws/templates/utils/parametrized/constraint/satisfies_condition.rb +55 -0
- data/lib/aws/templates/utils/parametrized/getter.rb +67 -0
- data/lib/aws/templates/utils/parametrized/getter/as_instance_variable.rb +41 -0
- data/lib/aws/templates/utils/parametrized/getter/as_is.rb +37 -0
- data/lib/aws/templates/utils/parametrized/getter/dsl.rb +62 -0
- data/lib/aws/templates/utils/parametrized/getter/one_of.rb +48 -0
- data/lib/aws/templates/utils/parametrized/getter/path.rb +53 -0
- data/lib/aws/templates/utils/parametrized/getter/value.rb +50 -0
- data/lib/aws/templates/utils/parametrized/nested.rb +9 -16
- data/lib/aws/templates/utils/parametrized/transformation.rb +74 -0
- data/lib/aws/templates/utils/parametrized/transformation/as_boolean.rb +42 -0
- data/lib/aws/templates/utils/parametrized/transformation/as_chain.rb +57 -0
- data/lib/aws/templates/utils/parametrized/transformation/as_hash.rb +89 -0
- data/lib/aws/templates/utils/parametrized/transformation/as_integer.rb +39 -0
- data/lib/aws/templates/utils/parametrized/transformation/as_list.rb +97 -0
- data/lib/aws/templates/utils/parametrized/transformation/as_module.rb +42 -0
- data/lib/aws/templates/utils/parametrized/transformation/as_object.rb +76 -0
- data/lib/aws/templates/utils/parametrized/transformation/as_rendered.rb +100 -0
- data/lib/aws/templates/utils/parametrized/transformation/as_string.rb +39 -0
- data/lib/aws/templates/utils/parametrized/transformation/dsl.rb +94 -0
- data/lib/aws/templates/utils/recursive.rb +22 -0
- data/spec/aws/templates/artifact_spec.rb +10 -10
- data/spec/aws/templates/cli_spec.rb +83 -0
- data/spec/aws/templates/composite_spec.rb +6 -4
- data/spec/aws/templates/help/rdoc/artifact_spec.rb +94 -0
- data/spec/aws/templates/help/rdoc/composite_spec.rb +53 -0
- data/spec/aws/templates/help/rdoc/parametrized/constraints/all_of_spec.rb +17 -0
- data/spec/aws/templates/help/rdoc/parametrized/constraints/depends_on_value_spec.rb +21 -0
- data/spec/aws/templates/help/rdoc/parametrized/constraints/enum_spec.rb +17 -0
- data/spec/aws/templates/help/rdoc/parametrized/constraints/matches_spec.rb +17 -0
- data/spec/aws/templates/help/rdoc/parametrized/constraints/satisfies_condition_spec.rb +17 -0
- data/spec/aws/templates/help/rdoc/parametrized/transformations/as_boolean_spec.rb +17 -0
- data/spec/aws/templates/help/rdoc/parametrized/transformations/as_chain_spec.rb +17 -0
- data/spec/aws/templates/help/rdoc/parametrized/transformations/as_hash_spec.rb +72 -0
- data/spec/aws/templates/help/rdoc/parametrized/transformations/as_integer_spec.rb +17 -0
- data/spec/aws/templates/help/rdoc/parametrized/transformations/as_list_spec.rb +39 -0
- data/spec/aws/templates/help/rdoc/parametrized/transformations/as_module_spec.rb +17 -0
- data/spec/aws/templates/help/rdoc/parametrized/transformations/as_object_spec.rb +38 -0
- data/spec/aws/templates/help/rdoc/parametrized/transformations/as_rendered_spec.rb +17 -0
- data/spec/aws/templates/render/utils/base_type_views_spec.rb +9 -11
- data/spec/aws/templates/render_spec.rb +1 -1
- data/spec/aws/templates/utils/as_named_spec.rb +0 -2
- data/spec/aws/templates/utils/autoload_spec.rb +14 -0
- data/spec/aws/templates/utils/contextualized_spec.rb +5 -5
- data/spec/aws/templates/utils/late_bound_spec.rb +2 -2
- data/spec/aws/templates/utils/parametrized/constraint_spec.rb +8 -10
- data/spec/aws/templates/utils/parametrized/getters_spec.rb +6 -7
- data/spec/aws/templates/utils/parametrized/transformation_spec.rb +3 -6
- data/spec/aws/templates/utils/parametrized_spec.rb +9 -10
- data/spec/aws/templates/utils_spec.rb +18 -0
- data/spec/test_empty/stuff.rb +4 -0
- data/spec/test_empty/stuff/here/test.rb +9 -0
- metadata +235 -19
- data/lib/aws/templates/exceptions.rb +0 -221
- data/lib/aws/templates/render/registry.rb +0 -60
- data/lib/aws/templates/utils/contextualized/filters.rb +0 -437
- data/lib/aws/templates/utils/contextualized/hash.rb +0 -13
- data/lib/aws/templates/utils/contextualized/nil.rb +0 -13
- data/lib/aws/templates/utils/contextualized/proc.rb +0 -13
- data/lib/aws/templates/utils/dependency/enumerable.rb +0 -13
- data/lib/aws/templates/utils/dependency/object.rb +0 -46
- data/lib/aws/templates/utils/parametrized/constraints.rb +0 -423
- data/lib/aws/templates/utils/parametrized/getters.rb +0 -293
- data/lib/aws/templates/utils/parametrized/guarded.rb +0 -32
- data/lib/aws/templates/utils/parametrized/transformations.rb +0 -652
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e79b5e16e0041b5dc5ce674b487ad99077202e3
|
4
|
+
data.tar.gz: 1a54e4739bcda03d6177f985825cb2d437bdd2a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b1577a1a9cf08220075c7ca19a6369344247c11a020245a12c03043376d630ed53e3ca12707e39015b747c5aab8dad1efdd6afe60d61f34678019822fe34b89e
|
7
|
+
data.tar.gz: c31af02860e9fa33552136daf75787ccbdbb932a50f3df72b6c1ff6ac38fa80dc7469207909a455db3ae21d5336b813d7e89a205574dc086d1de1290c90add7c
|
data/.rspec
ADDED
data/.rubocop.yml
CHANGED
data/Rakefile
CHANGED
@@ -10,7 +10,7 @@ end
|
|
10
10
|
|
11
11
|
desc 'Check code notation'
|
12
12
|
RuboCop::RakeTask.new(:lint) do |task|
|
13
|
-
task.patterns = ['lib/**/*.rb', 'spec/**/*.rb', 'examples/lib/**/*.rb', 'examples/spec/**/*.rb']
|
13
|
+
task.patterns = ['lib/**/*.rb', 'spec/**/*.rb', 'examples/lib/**/*.rb', 'examples/spec/**/*.rb', 'bin/**/*.rb']
|
14
14
|
task.formatters += ['html']
|
15
15
|
task.options += [
|
16
16
|
'--fail-level', 'convention',
|
data/cloud-templates.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'cloud-templates'
|
3
|
-
s.version = '0.
|
3
|
+
s.version = '0.3.0'
|
4
4
|
s.license = 'Apache 2.0'
|
5
5
|
s.summary = 'Hierarchical data templates'
|
6
6
|
s.description = 'MVC-based templating framework for hierarchical data structures. ' \
|
@@ -13,13 +13,18 @@ Gem::Specification.new do |s|
|
|
13
13
|
Dir['examples/**/*'] +
|
14
14
|
[
|
15
15
|
'LICENSE', 'Gemfile', 'NOTICE', 'README.md', 'Rakefile',
|
16
|
-
'.rubocop.yml', '.simplecov', 'cloud-templates.gemspec'
|
16
|
+
'.rubocop.yml', '.simplecov', 'cloud-templates.gemspec',
|
17
|
+
'.rspec'
|
17
18
|
]
|
19
|
+
s.executables << 'cloud-templates-runner.rb'
|
18
20
|
s.test_files = Dir['spec/**/*'] + Dir['examples/spec/**/*']
|
19
21
|
s.homepage = 'https://rubygems.org/gems/cloud-templates'
|
20
|
-
s.required_ruby_version = Gem::Requirement.new(">= 2.
|
22
|
+
s.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
|
23
|
+
s.add_dependency('facets', '>=3.0', '~> 3')
|
24
|
+
s.add_dependency('concurrent-ruby', '>=1.0.4', '~>1.0')
|
25
|
+
s.add_dependency('thor', '>=0.20.0', '~>0.20')
|
21
26
|
s.add_development_dependency('rspec', '>= 3.2', '~> 3')
|
22
|
-
s.add_development_dependency('rubocop', '~> 0.
|
27
|
+
s.add_development_dependency('rubocop', '~> 0.50')
|
23
28
|
s.add_development_dependency('rubocop-rspec', '~> 1.17')
|
24
29
|
s.add_development_dependency('byebug', '>= 9.0.5', '~> 9')
|
25
30
|
s.add_development_dependency('yard', '~> 0.9')
|
@@ -1,13 +1,3 @@
|
|
1
|
-
require 'user_directory/artifacts/user'
|
2
|
-
require 'user_directory/artifacts/person'
|
3
|
-
require 'user_directory/artifacts/group'
|
4
|
-
require 'user_directory/artifacts/unit'
|
5
|
-
require 'user_directory/artifacts/team'
|
6
|
-
require 'user_directory/artifacts/organization'
|
7
|
-
|
8
|
-
require 'user_directory/render/etc'
|
9
|
-
require 'user_directory/render/ldap'
|
10
|
-
|
11
1
|
##
|
12
2
|
# Example implementation of catalog
|
13
3
|
#
|
@@ -1,11 +1,12 @@
|
|
1
|
-
require 'aws/templates/utils
|
2
|
-
require 'aws/templates/utils/parametrized/constraints'
|
1
|
+
require 'aws/templates/utils'
|
3
2
|
|
4
3
|
module UserDirectory
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
4
|
+
module Artifacts
|
5
|
+
##
|
6
|
+
# Parameter mixin containing universal catalog entry fields
|
7
|
+
module Catalogized
|
8
|
+
include Aws::Templates::Utils::Parametrized
|
9
|
+
parameter :dn, description: 'Object distinguished name', constraint: not_nil
|
10
|
+
end
|
10
11
|
end
|
11
12
|
end
|
@@ -1,37 +1,34 @@
|
|
1
|
-
require 'aws/templates/
|
2
|
-
require 'aws/templates/utils/parametrized/constraints'
|
3
|
-
require 'aws/templates/utils/parametrized/transformations'
|
4
|
-
require 'user_directory/artifacts/ided'
|
5
|
-
require 'user_directory/artifacts/catalogized'
|
6
|
-
require 'user_directory/artifacts/pathed'
|
1
|
+
require 'aws/templates/utils'
|
7
2
|
|
8
3
|
module UserDirectory
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
4
|
+
module Artifacts
|
5
|
+
##
|
6
|
+
# POSIX Group
|
7
|
+
class Group < Aws::Templates::Artifact
|
8
|
+
include Artifacts::Ided
|
9
|
+
include Artifacts::Catalogized
|
14
10
|
|
15
|
-
|
16
|
-
|
11
|
+
default dn: proc { "cn=#{name},ou=System,#{organization.dn}" },
|
12
|
+
cn: proc { name }
|
17
13
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
constraint: not_nil,
|
23
|
-
transform: as_object(Catalogized)
|
24
|
-
parameter :members,
|
25
|
-
description: 'Group members list',
|
26
|
-
transform: as_list(
|
27
|
-
name: :member,
|
28
|
-
description: 'Member in the group',
|
14
|
+
parameter :cn, description: 'Group canonical name', constraint: not_nil
|
15
|
+
parameter :name, description: 'Group name'
|
16
|
+
parameter :organization,
|
17
|
+
description: 'Organization object',
|
29
18
|
constraint: not_nil,
|
30
|
-
transform: as_object
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
19
|
+
transform: as_object(Artifacts::Catalogized)
|
20
|
+
parameter :members,
|
21
|
+
description: 'Group members list',
|
22
|
+
transform: as_list(
|
23
|
+
name: :member,
|
24
|
+
description: 'Member in the group',
|
25
|
+
constraint: not_nil,
|
26
|
+
transform: as_object do
|
27
|
+
parameter :login,
|
28
|
+
description: 'User login',
|
29
|
+
constraint: not_nil
|
30
|
+
end
|
31
|
+
)
|
32
|
+
end
|
36
33
|
end
|
37
34
|
end
|
@@ -1,11 +1,12 @@
|
|
1
|
-
require 'aws/templates/utils
|
2
|
-
require 'aws/templates/utils/parametrized/constraints'
|
1
|
+
require 'aws/templates/utils'
|
3
2
|
|
4
3
|
module UserDirectory
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
4
|
+
module Artifacts
|
5
|
+
##
|
6
|
+
# Parameter mixin containing universal parameters for indexed objects
|
7
|
+
module Ided
|
8
|
+
include Aws::Templates::Utils::Parametrized
|
9
|
+
parameter :id, description: 'Object ID', constraint: not_nil
|
10
|
+
end
|
10
11
|
end
|
11
12
|
end
|
@@ -1,17 +1,16 @@
|
|
1
|
-
require 'aws/templates/
|
2
|
-
require 'aws/templates/utils/parametrized'
|
3
|
-
require 'aws/templates/utils/parametrized/constraints'
|
4
|
-
require 'user_directory/artifacts/catalogized'
|
1
|
+
require 'aws/templates/utils'
|
5
2
|
|
6
3
|
module UserDirectory
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
4
|
+
module Artifacts
|
5
|
+
##
|
6
|
+
# Catalog's organization
|
7
|
+
class Organization < Aws::Templates::Composite
|
8
|
+
include Artifacts::Catalogized
|
11
9
|
|
12
|
-
|
13
|
-
|
10
|
+
default dn: proc { "o=#{name}" }
|
11
|
+
parameter :name, description: 'Organization name', constraint: not_nil
|
14
12
|
|
15
|
-
|
13
|
+
contextualize filter(:override) { { organization: self, unit: self } }
|
14
|
+
end
|
16
15
|
end
|
17
16
|
end
|
@@ -1,22 +1,22 @@
|
|
1
|
-
require 'aws/templates/utils
|
2
|
-
require 'aws/templates/utils/parametrized/constraints'
|
3
|
-
require 'pathname'
|
1
|
+
require 'aws/templates/utils'
|
4
2
|
|
5
3
|
module UserDirectory
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
4
|
+
module Artifacts
|
5
|
+
##
|
6
|
+
# Parameter mixin containing universal fields for file objects
|
7
|
+
#
|
8
|
+
# It contains "path" field with constraint checking if the path
|
9
|
+
# passed is absolute.
|
10
|
+
module Pathed
|
11
|
+
include Aws::Templates::Utils::Parametrized
|
13
12
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
13
|
+
parameter :path,
|
14
|
+
description: 'Path',
|
15
|
+
transform: ->(_, s) { ::Pathname.new(s) },
|
16
|
+
constraint: all_of(
|
17
|
+
not_nil,
|
18
|
+
satisfies('The path is a valid absolute path', &:absolute?)
|
19
|
+
)
|
20
|
+
end
|
21
21
|
end
|
22
22
|
end
|
@@ -1,20 +1,25 @@
|
|
1
|
-
require '
|
2
|
-
require 'user_directory/artifacts/user'
|
1
|
+
require 'aws/templates/utils'
|
3
2
|
|
4
3
|
module UserDirectory
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
4
|
+
module Artifacts
|
5
|
+
##
|
6
|
+
# Catalog's person
|
7
|
+
#
|
8
|
+
# Represents UNIX user who is a real person. Contains all related
|
9
|
+
# attributes.
|
10
|
+
class Person < User
|
11
|
+
default cn: proc { "#{given_name} #{last_name} (#{login})" }
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
13
|
+
parameter :given_name, description: 'Person\'s given name', constraint: not_nil
|
14
|
+
parameter :middle_name, description: 'Person\'s middle name'
|
15
|
+
parameter :last_name, description: 'Person\'s last name', constraint: not_nil
|
16
|
+
parameter :patronimic, description: 'Person\'s patronimic'
|
17
|
+
parameter :phone,
|
18
|
+
description: 'Desk phone number',
|
19
|
+
constraint: UserDirectory::Utils.phone_number
|
20
|
+
parameter :manager,
|
21
|
+
description: 'Person\'s manager',
|
22
|
+
transform: as_object(Artifacts::Catalogized)
|
23
|
+
end
|
19
24
|
end
|
20
25
|
end
|
@@ -1,30 +1,35 @@
|
|
1
|
-
require '
|
1
|
+
require 'aws/templates/utils'
|
2
2
|
|
3
3
|
module UserDirectory
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
4
|
+
module Artifacts
|
5
|
+
##
|
6
|
+
# Team composite
|
7
|
+
#
|
8
|
+
# Each team has a POSIX group assigned to its members, a manager,
|
9
|
+
# and subordinates. That's exactly what is represented here.
|
10
|
+
class Team < Unit
|
11
|
+
parameter :manager, description: 'Manager description hash', constraint: not_nil
|
12
|
+
parameter :subordinates,
|
13
|
+
description: 'List of subordinates\' descriptions',
|
14
|
+
constraint: not_nil
|
15
|
+
parameter :group_id, description: 'Team\'s group ID'
|
15
16
|
|
16
|
-
|
17
|
-
|
17
|
+
components do
|
18
|
+
group = artifact Artifacts::Group,
|
19
|
+
label: 'group',
|
20
|
+
name: name.downcase.tr(' ', '_'),
|
21
|
+
id: group_id
|
18
22
|
|
19
|
-
|
20
|
-
|
23
|
+
contextualize(group: group) do
|
24
|
+
manager_artifact = artifact Artifacts::Person, manager.merge(label: 'manager')
|
21
25
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
+
# Circular dependency between group and its members
|
27
|
+
subordinates_artifacts = contextualize(manager: manager_artifact) do
|
28
|
+
subordinates.map { |subordinate| artifact Artifacts::Person, subordinate }
|
29
|
+
end
|
26
30
|
|
27
|
-
|
31
|
+
group.options[:members] = subordinates_artifacts << manager_artifact
|
32
|
+
end
|
28
33
|
end
|
29
34
|
end
|
30
35
|
end
|
@@ -1,24 +1,22 @@
|
|
1
|
-
require 'aws/templates/
|
2
|
-
require 'aws/templates/utils/parametrized'
|
3
|
-
require 'aws/templates/utils/parametrized/constraints'
|
4
|
-
require 'user_directory/artifacts/user'
|
5
|
-
require 'user_directory/artifacts/catalogized'
|
1
|
+
require 'aws/templates/utils'
|
6
2
|
|
7
3
|
module UserDirectory
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
4
|
+
module Artifacts
|
5
|
+
##
|
6
|
+
# Catalog's organizational unit
|
7
|
+
class Unit < Aws::Templates::Composite
|
8
|
+
include Artifacts::Catalogized
|
12
9
|
|
13
|
-
|
14
|
-
|
10
|
+
default label: proc { name },
|
11
|
+
dn: proc { "ou=#{name},#{unit.dn}" }
|
15
12
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
13
|
+
parameter :unit,
|
14
|
+
description: 'Hierarchical parent of the unit',
|
15
|
+
constraint: not_nil,
|
16
|
+
transform: as_object(Artifacts::Catalogized)
|
17
|
+
parameter :name, description: 'Organizational unit name', constraint: not_nil
|
21
18
|
|
22
|
-
|
19
|
+
contextualize filter(:add, :shell, :organization) & filter(:override) { { unit: self } }
|
20
|
+
end
|
23
21
|
end
|
24
22
|
end
|
@@ -1,29 +1,32 @@
|
|
1
|
-
require 'aws/templates/
|
2
|
-
require 'aws/templates/utils/parametrized/constraints'
|
3
|
-
require 'aws/templates/utils/parametrized/transformations'
|
4
|
-
require 'user_directory/artifacts/ided'
|
5
|
-
require 'user_directory/artifacts/pathed'
|
6
|
-
require 'user_directory/artifacts/catalogized'
|
1
|
+
require 'aws/templates/utils'
|
7
2
|
|
8
3
|
module UserDirectory
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
4
|
+
module Artifacts
|
5
|
+
##
|
6
|
+
# POSIX user
|
7
|
+
class User < Aws::Templates::Artifact
|
8
|
+
include Artifacts::Ided
|
9
|
+
include Artifacts::Catalogized
|
14
10
|
|
15
|
-
|
16
|
-
|
17
|
-
|
11
|
+
default dn: proc { "cn=#{cn},#{unit.dn}" },
|
12
|
+
home_directory: proc { { path: "/home/#{login}" } },
|
13
|
+
shell: { path: '/bin/sh' }
|
18
14
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
15
|
+
parameter :cn, description: 'Object canonical name', constraint: not_nil
|
16
|
+
parameter :login, description: 'User login', constraint: not_nil
|
17
|
+
parameter :group,
|
18
|
+
description: 'User main group',
|
19
|
+
constraint: not_nil,
|
20
|
+
transform: as_object(Artifacts::Ided)
|
21
|
+
parameter :home_directory,
|
22
|
+
description: 'Home directory',
|
23
|
+
transform: as_object(Artifacts::Pathed)
|
24
|
+
parameter :shell,
|
25
|
+
description: 'Shell path',
|
26
|
+
transform: as_object(Artifacts::Pathed)
|
27
|
+
parameter :unit,
|
28
|
+
description: 'User\'s organizational unit',
|
29
|
+
transform: as_object(Artifacts::Catalogized)
|
30
|
+
end
|
28
31
|
end
|
29
32
|
end
|