MCPcopy
hub / github.com/apache/caldera / AbilitySchema

Class AbilitySchema

app/objects/c_ability.py:14–46  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

12
13
14class AbilitySchema(ma.Schema):
15
16 class Meta:
17 unknown = ma.EXCLUDE
18
19 ability_id = ma.fields.String()
20 tactic = ma.fields.String(load_default=None)
21 technique_name = ma.fields.String(load_default=None)
22 technique_id = ma.fields.String(load_default=None)
23 name = ma.fields.String(load_default=None)
24 description = ma.fields.String(load_default=None)
25 executors = ma.fields.List(ma.fields.Nested(ExecutorSchema))
26 requirements = ma.fields.List(ma.fields.Nested(RequirementSchema), load_default=None)
27 privilege = ma.fields.String(load_default=None)
28 repeatable = ma.fields.Bool(load_default=None)
29 buckets = ma.fields.List(ma.fields.String(), load_default=None)
30 additional_info = ma.fields.Dict(keys=ma.fields.String(), values=ma.fields.String())
31 access = ma.fields.Nested(AccessSchema, load_default=None)
32 singleton = ma.fields.Bool(load_default=None)
33 plugin = ma.fields.String(load_default=None)
34 delete_payload = ma.fields.Bool(load_default=None)
35
36 @ma.pre_load
37 def fix_id(self, data, **_):
38 if 'id' in data:
39 data['ability_id'] = data.pop('id')
40 return data
41
42 @ma.post_load
43 def build_ability(self, data, **kwargs):
44 if 'technique' in data:
45 data['technique_name'] = data.pop('technique')
46 return None if kwargs.get('partial') is True else Ability(**data)
47
48
49class Ability(FirstClassObjectInterface, BaseObject):

Callers 6

LinkSchemaClass · 0.90
update_on_disk_objectMethod · 0.90
build_abilityMethod · 0.90
test_abilityFunction · 0.90
deploy_abilityFunction · 0.90
AbilityClass · 0.85

Calls

no outgoing calls

Tested by 2

test_abilityFunction · 0.72
deploy_abilityFunction · 0.72