dtk_crd_parser 0.0.39 → 0.0.40
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/lib/crd_parser.rb +14 -1
- data/lib/crd_parser/action.rb +40 -0
- data/lib/crd_parser/base_class/helper_mixins.rb +5 -0
- data/lib/crd_parser/component.rb +8 -11
- data/lib/crd_parser/component/attribute.rb +6 -5
- data/lib/crd_parser/component_def.rb +23 -17
- data/lib/crd_parser/component_def/attribute_type_info.rb +5 -5
- data/lib/crd_parser/error.rb +5 -0
- data/lib/crd_parser/error/usage.rb +6 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 7db0223829bb7c53f309e52c808582992490abed7964a65facdc70339e60cb79
|
4
|
+
data.tar.gz: a492d85e80d9fd68a1680961d6482356b5d882d5caf18e58e76066ecd78f25f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 30e17286423da409bbedc746db71e2ca00d34145d29596fdedc9247ee1e19d463115b0d3050634b59bda304b1c642c30f8cac6a053caf99159a701fdc5ec4e2b
|
7
|
+
data.tar.gz: 771b3eaf135045ddb093221eef64664933967464d708fce73886fe5d418fb5adcc7df4e64d38edc1813d764b660116872f4ff4c2d9b4ef21fd5ad7c027eed241
|
data/lib/crd_parser.rb
CHANGED
@@ -4,12 +4,25 @@ module DTK
|
|
4
4
|
|
5
5
|
require_relative('crd_parser/component')
|
6
6
|
require_relative('crd_parser/component_def')
|
7
|
-
|
7
|
+
require_relative('crd_parser/action')
|
8
|
+
require_relative('crd_parser/error')
|
9
|
+
|
8
10
|
def self.parse_crd_to_component(client, component_instance, component_name)
|
9
11
|
#component instance has a name and a namespace {name: xxx, namespace: yyy}
|
10
12
|
#client is kube client
|
11
13
|
#component name is, for example, network-aws::vpc[vpc1]
|
12
14
|
Component.create_from_kube(client, component_instance, component_name)
|
13
15
|
end
|
16
|
+
|
17
|
+
def self.parse_crd_to_action(client, component_instance, action_instance)
|
18
|
+
#component instance has a name and a namespace {name: xxx, namespace: yyy}
|
19
|
+
#client is kube client
|
20
|
+
#action instance, for example, {name: xxx, namespace: xxx, id: xxx}
|
21
|
+
Action.create_from_kube(client, component_instance, action_instance)
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.parse_crd_to_executable_action(client, component_instance, component_name)
|
25
|
+
Component.create_from_kube(client, component_instance, component_name)
|
26
|
+
end
|
14
27
|
end
|
15
28
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module DTK::CrdParser
|
2
|
+
class Action < BaseClass
|
3
|
+
|
4
|
+
def initialize(name, id, component)
|
5
|
+
@name = name #action name, for example: create node group members
|
6
|
+
@component = component #this will point to the corresponding component object, example: ec2::node-group[ng]
|
7
|
+
@id = id #action subtask id
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.create_from_kube(client, component_instance, action_instance)
|
11
|
+
action_obj = client.get_action(action_instance[:name], action_instance[:namespace])
|
12
|
+
@actionExists = false
|
13
|
+
action = find_action(action_instance[:id], action_obj[:spec][:action])
|
14
|
+
component_name = action[:component]
|
15
|
+
component = Component.create_from_kube(client, component_instance, component_name)
|
16
|
+
Action.new(action[:name], action[:id], component)
|
17
|
+
end
|
18
|
+
|
19
|
+
protected
|
20
|
+
|
21
|
+
@action = nil
|
22
|
+
@actionExists = false
|
23
|
+
def self.find_action(id, actionObject)
|
24
|
+
return @action if @actionExists
|
25
|
+
iterator = 0
|
26
|
+
while (!@actionExists && iterator < actionObject[:subtasks].length)
|
27
|
+
@action = actionObject[:subtasks][iterator]
|
28
|
+
if @action.id.to_s == id.to_s
|
29
|
+
@actionExists = true
|
30
|
+
return @action
|
31
|
+
elsif @action[:subtasks]
|
32
|
+
return self.find_action(id, @action)
|
33
|
+
end
|
34
|
+
iterator+=1
|
35
|
+
end
|
36
|
+
end
|
37
|
+
attr_reader :name, :component, :id
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
@@ -4,6 +4,11 @@ module DTK::CrdParser
|
|
4
4
|
module ClassAndInstanceMixin
|
5
5
|
# Helper functions want to have available in all classes
|
6
6
|
|
7
|
+
def fail_if_nil(value, property_name)
|
8
|
+
fail Error::Usage, "Property #{property_name} should not be nil") unless value
|
9
|
+
value
|
10
|
+
end
|
11
|
+
|
7
12
|
def fail_if_not_type(object, type)
|
8
13
|
if object.kind_of?(type)
|
9
14
|
object
|
data/lib/crd_parser/component.rb
CHANGED
@@ -1,26 +1,22 @@
|
|
1
1
|
module DTK::CrdParser
|
2
2
|
class Component < BaseClass
|
3
3
|
require_relative('component/attribute')
|
4
|
-
|
5
|
-
attr_reader :name, :component_def, :attributes
|
4
|
+
require_relative('error')
|
6
5
|
|
7
6
|
MODE_DEFAULT = :component_instance
|
8
7
|
def initialize(name, component_def, attributes)
|
9
|
-
@name = name
|
10
|
-
@component_def = component_def # this wil point to the corresponding component def
|
11
|
-
@attributes = attributes # array that has an Attribute object for each attribute; these are name-value pairs
|
8
|
+
@name = fail_if_nil(name, 'name')
|
9
|
+
@component_def = fail_if_nil(component_def, 'component_def') # this wil point to the corresponding component def
|
10
|
+
@attributes = attributes || [] # array that has an Attribute object for each attribute; these are name-value pairs
|
12
11
|
end
|
13
12
|
|
14
13
|
def self.create_from_kube(client, component_instance, component_name)
|
15
|
-
component_name.gsub!('_', '-')
|
16
14
|
component_instance_obj = client.get_component(component_instance[:name], component_instance[:namespace])
|
17
15
|
component_def = ComponentDef.create_from_kube(client, component_instance_obj, component_name)
|
18
16
|
component_attributes = getComponentAttributes(component_name, component_instance_obj[:spec][:components])
|
19
17
|
attributes = []
|
20
|
-
|
21
|
-
|
22
|
-
attributes.push Attribute.create_from_kube(attribute_name, attribute_value)
|
23
|
-
end
|
18
|
+
(component_attributes || []).to_hash.each do |attribute_name, attribute_value|
|
19
|
+
attributes.push Attribute.create_from_kube(attribute_name, attribute_value)
|
24
20
|
end
|
25
21
|
Component.new(component_name, component_def, attributes)
|
26
22
|
end
|
@@ -28,6 +24,7 @@ module DTK::CrdParser
|
|
28
24
|
protected
|
29
25
|
|
30
26
|
def self.getComponentAttributes(fullComponentName, components)
|
27
|
+
fullComponentName.gsub!('_', '-')
|
31
28
|
component = components.each do |component|
|
32
29
|
componentObj = component[fullComponentName]
|
33
30
|
if(componentObj && componentObj.is_a?(Kubeclient::Resource))
|
@@ -37,6 +34,6 @@ module DTK::CrdParser
|
|
37
34
|
return nil
|
38
35
|
end
|
39
36
|
|
40
|
-
|
37
|
+
attr_reader :name, :component_def, :attributes
|
41
38
|
end
|
42
39
|
end
|
@@ -1,18 +1,19 @@
|
|
1
1
|
module DTK::CrdParser
|
2
2
|
class Component
|
3
3
|
class Attribute < BaseClass
|
4
|
-
|
5
|
-
attr_reader :name, :value
|
6
|
-
|
7
4
|
def initialize(name, value)
|
8
|
-
@name = name
|
9
|
-
@value = value
|
5
|
+
@name = fail_if_nil(name, 'Attribute.name')
|
6
|
+
@value = fail_if_nil(value, 'Attribute.value')
|
10
7
|
end
|
11
8
|
|
12
9
|
def self.create_from_kube(attribute_name, attribute_value)
|
13
10
|
Attribute.new(attribute_name, attribute_value)
|
14
11
|
end
|
15
12
|
|
13
|
+
protected
|
14
|
+
|
15
|
+
attr_reader :name, :value
|
16
|
+
|
16
17
|
end
|
17
18
|
end
|
18
19
|
end
|
@@ -1,21 +1,17 @@
|
|
1
1
|
module DTK::CrdParser
|
2
2
|
class ComponentDef < BaseClass
|
3
3
|
require_relative('component_def/attribute_type_info')
|
4
|
-
|
5
|
-
attr_reader :name, :namespace, :resource_version, :attribute_type_info, :bash_script, :entrypoint, :type
|
4
|
+
require_relative('error')
|
6
5
|
|
7
6
|
MODE_DEFAULT = :component_instance
|
8
7
|
|
9
|
-
def initialize(metadata,
|
10
|
-
@name = metadata[:name]
|
11
|
-
@namespace = metadata[:namespace]
|
12
|
-
@resource_version = metadata[:resourceVersion]
|
13
|
-
|
14
|
-
@bash_script = componentDefAction[:bash_script]
|
15
|
-
@entrypoint = componentDefAction[:entrypoint]
|
16
|
-
@type = componentDefAction[:type]
|
8
|
+
def initialize(metadata, componentDefActions, componentDefAttributes)
|
9
|
+
@name = fail_if_nil(metadata[:name], 'metadata[:name]')
|
10
|
+
@namespace = fail_if_nil(metadata[:namespace], 'metadata[:namespace]')
|
11
|
+
@resource_version = fail_if_nil(metadata[:resourceVersion], 'metadata[:resourceVersion]')
|
17
12
|
|
18
|
-
@
|
13
|
+
@executable_actions = componentDefActions || []
|
14
|
+
@attribute_type_info = componentDefAttributes || []
|
19
15
|
end
|
20
16
|
|
21
17
|
def self.create_from_kube(client, component_instance, component_def_name)
|
@@ -24,15 +20,17 @@ module DTK::CrdParser
|
|
24
20
|
|
25
21
|
componentDef = client.get_componentdef("#{destructured_component[:moduleName]}-#{destructured_component[:componentName]}", module_ref[:namespace])
|
26
22
|
|
27
|
-
|
28
|
-
|
29
|
-
|
23
|
+
componentMetadata = self.metadata(componentDef)
|
24
|
+
|
25
|
+
name = componentMetadata[:name]
|
26
|
+
namespace = componentMetadata[:namespace]
|
27
|
+
resourceVersion = componentMetadata[:resourceVersion]
|
30
28
|
|
31
|
-
componentDefSpec = componentDef[:spec]
|
32
|
-
componentDefAction = componentDefSpec[:actions][destructured_component[:action].to_sym]
|
29
|
+
componentDefSpec = componentDef[:spec] || {}
|
30
|
+
componentDefAction = componentDefSpec[:actions][destructured_component[:action].to_sym] if componentDefSpec[:actions]
|
33
31
|
componentDefAttributes = []
|
34
32
|
|
35
|
-
componentDefSpec[:attributes].each do |attribute|
|
33
|
+
(componentDefSpec[:attributes] || []).each do |attribute|
|
36
34
|
componentDefAttributes.push AttributeTypeInfo.resolveAttr(attribute)
|
37
35
|
end
|
38
36
|
|
@@ -80,5 +78,13 @@ module DTK::CrdParser
|
|
80
78
|
action: action
|
81
79
|
}
|
82
80
|
end
|
81
|
+
|
82
|
+
protected
|
83
|
+
|
84
|
+
attr_reader :name, :namespace, :resource_version, :attribute_type_info, :bash_script, :entrypoint, :type
|
85
|
+
|
86
|
+
def self.metadata(componentDef)
|
87
|
+
componentDef[:metadata]
|
88
|
+
end
|
83
89
|
end
|
84
90
|
end
|
@@ -1,12 +1,9 @@
|
|
1
1
|
module DTK::CrdParser
|
2
2
|
class ComponentDef
|
3
3
|
class AttributeTypeInfo < BaseClass
|
4
|
-
|
5
|
-
attr_reader :name, :type, :required, :dynamic
|
6
|
-
|
7
4
|
def initialize(params)
|
8
|
-
@name = params[:name]
|
9
|
-
@type = params[:type]
|
5
|
+
@name = fail_if_nil(params[:name], 'AttributeTypeInfo.name')
|
6
|
+
@type = fail_if_nil(params[:type], 'AttributeTypeInfo.type')
|
10
7
|
@required = params[:required] || false
|
11
8
|
@dynamic = params[:dynamic] || false
|
12
9
|
end
|
@@ -15,6 +12,9 @@ module DTK::CrdParser
|
|
15
12
|
AttributeTypeInfo.new(attribute)
|
16
13
|
end
|
17
14
|
|
15
|
+
protected
|
16
|
+
|
17
|
+
attr_reader :name
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dtk_crd_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.40
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- DTK
|
@@ -17,12 +17,15 @@ extensions: []
|
|
17
17
|
extra_rdoc_files: []
|
18
18
|
files:
|
19
19
|
- lib/crd_parser.rb
|
20
|
+
- lib/crd_parser/action.rb
|
20
21
|
- lib/crd_parser/base_class.rb
|
21
22
|
- lib/crd_parser/base_class/helper_mixins.rb
|
22
23
|
- lib/crd_parser/component.rb
|
23
24
|
- lib/crd_parser/component/attribute.rb
|
24
25
|
- lib/crd_parser/component_def.rb
|
25
26
|
- lib/crd_parser/component_def/attribute_type_info.rb
|
27
|
+
- lib/crd_parser/error.rb
|
28
|
+
- lib/crd_parser/error/usage.rb
|
26
29
|
homepage: https://rubygems.org/gems/dtk_crd_parser
|
27
30
|
licenses:
|
28
31
|
- MIT
|
@@ -42,8 +45,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
42
45
|
- !ruby/object:Gem::Version
|
43
46
|
version: '0'
|
44
47
|
requirements: []
|
45
|
-
|
46
|
-
rubygems_version: 2.4.5.4
|
48
|
+
rubygems_version: 3.0.3
|
47
49
|
signing_key:
|
48
50
|
specification_version: 4
|
49
51
|
summary: Parse kubernetes DTK crd to ruby in memory object!
|