From e897a6760429ea46da15ebbca1609b62fd37fee9 Mon Sep 17 00:00:00 2001 From: Ross Wolf <31489089+rw-access@users.noreply.github.com> Date: Thu, 17 Jun 2021 06:16:09 -0600 Subject: [PATCH] Fix fleet package generation (#1296) * Fix fleet package generation * Add .lstrip() * Lint fix * Add newline --- detection_rules/packaging.py | 8 +++---- detection_rules/schemas/registry_package.py | 25 +++++---------------- etc/packages.yml | 22 +++++++++--------- 3 files changed, 21 insertions(+), 34 deletions(-) diff --git a/detection_rules/packaging.py b/detection_rules/packaging.py index 12c53bb1e..2339d3b4d 100644 --- a/detection_rules/packaging.py +++ b/detection_rules/packaging.py @@ -471,9 +471,9 @@ class Package(object): manifest_file = package_dir / 'manifest.yml' readme_file = docs_dir / 'README.md' notice_file = package_dir / 'NOTICE.txt' - logo_file = package_dir / 'img' / 'security-logo-color-64px.png' + logo_file = package_dir / 'img' / 'security-logo-color-64px.svg' - manifest_file.write_text(yaml.safe_dump(manifest.asdict())) + manifest_file.write_text(yaml.safe_dump(manifest.to_dict())) logo_file.parent.mkdir(parents=True) shutil.copyfile(FLEET_PKG_LOGO, logo_file) @@ -485,7 +485,7 @@ class Package(object): notice_contents = Path(NOTICE_FILE).read_text() readme_text = textwrap.dedent(""" - # Detection rules + # Prebuilt Security Detection Rules The detection rules package stores the prebuilt security rules for the Elastic Security [detection engine](https://www.elastic.co/guide/en/security/7.13/detection-engine-overview.html). @@ -495,7 +495,7 @@ class Package(object): ## License Notice - """) + textwrap.indent(notice_contents, prefix=" ") # noqa: E501 + """).lstrip() + textwrap.indent(notice_contents, prefix=" ") # noqa: E501 readme_file.write_text(readme_text) notice_file.write_text(notice_contents) diff --git a/detection_rules/schemas/registry_package.py b/detection_rules/schemas/registry_package.py index b60e54ca0..b94cf13c8 100644 --- a/detection_rules/schemas/registry_package.py +++ b/detection_rules/schemas/registry_package.py @@ -5,17 +5,15 @@ """Definitions for packages destined for the registry.""" -from dataclasses import dataclass, field -from typing import Dict, List, Optional, Type - -from marshmallow import Schema -from marshmallow_dataclass import class_schema +from dataclasses import dataclass +from typing import Dict, List, Optional from .definitions import ConditionSemVer, SemVer +from ..mixins import MarshmallowDataclassMixin @dataclass -class RegistryPackageManifest: +class RegistryPackageManifest(MarshmallowDataclassMixin): """Base class for registry packages.""" categories: List[str] @@ -32,16 +30,5 @@ class RegistryPackageManifest: version: SemVer internal: Optional[bool] = None - policy_templates: list = field(default_factory=list) - screenshots: list = field(default_factory=list) - - @classmethod - def get_schema(cls) -> Type[Schema]: - return class_schema(cls) - - @classmethod - def from_dict(cls, obj: dict) -> 'RegistryPackageManifest': - return cls.get_schema()().load(obj) - - def asdict(self) -> dict: - return self.get_schema()().dump(self) + policy_templates: Optional[list] = None + screenshots: Optional[list] = None diff --git a/etc/packages.yml b/etc/packages.yml index 1ecb02805..52f94bb2c 100644 --- a/etc/packages.yml +++ b/etc/packages.yml @@ -26,18 +26,18 @@ package: registry_data: categories: ["security"] conditions: - kibana_version: "^7.13.0" - description: "Prebuilt detection rules for Elastic Security" - format_version: "1.0.0" + kibana.version: "^7.13.0" + description: Prebuilt detection rules for Elastic Security + format_version: 1.0.0 icons: - - src: "/img/security-logo-color-64px.svg" - size: "16x16" - type: "image/svg+xml" + - size: 16x16 + src: /img/security-logo-color-64px.svg + type: image/svg+xml license: basic - name: "detection_rules" + name: security_detection_engine owner: github: elastic/protections - release: "beta" - title: "Prebuilt Security Detection Rules" - type: "integration" - version: "0.13.0" + release: beta + title: Prebuilt Security Detection Rules + type: integration + version: 0.13.0