remove .rpsl/config in favor of schema/SCHEMA-SCHEMA

This commit is contained in:
Jonathan Lundy 2020-06-26 10:04:57 -06:00
parent 26a13274ae
commit 78421585a5
No known key found for this signature in database
GPG Key ID: C63E6D61F3035024
7 changed files with 29 additions and 46 deletions

5
.gitignore vendored
View File

@ -3,7 +3,4 @@ lib/
whoisd/
__pycache__
/data/.rpsl/index
/data/.rpsl/links
/data/.rpsl/nettree
/data/.rpsl/schema
/data/.rpsl

View File

@ -1,15 +0,0 @@
namespace: dn42
schema: schema
owners: mntner
default-owner: DN42-MNT
primary-key: person nic-hdl
primary-key: role nic-hdl
primary-key: inetnum cidr
primary-key: inet6num cidr
network-owner: inet6num inet6num
network-owner: inet6num inetnum
network-owner: inetnum inetnum
network-owner: inetnum route
network-owner: inet6num route6
mnt-by: DN42-MNT
source: DN42

View File

@ -1,10 +0,0 @@
schema: NAMESPACE-SCHEMA
ref: dn42.namespace
key: namespace required single primary schema > [name]
key: ns-schema required single > [schema]
key: ns-owner required single > [schema]
key: default-owner optional single lookup=dn42.mntner > [mntner]
key: network-owner optional multiple > [parent-schema] [child-schema]
key: primary-key optional multiple > [schema] [primary]
mnt-by: DN42-MNT
source: DN42

View File

@ -1,15 +1,24 @@
schema: SCHEMA-SCHEMA
namespace: dn42
primary-key: inetnum cidr
primary-key: inet6num cidr
primary-key: role nic-hdl
primary-key: person nic-hdl
namespace-owners: mntner
ref: dn42.schema
key: schema required single primary schema > [name]
key: ref required single > [schema]
key: key required multiple > [key-name]
{required|optional|recommend|deprecate}
{single|multiple} {primary|} {schema|}
lookup=str '>' [spec]...
key: mnt-by required multiple lookup=dn42.mntner > [mntner]
key: remarks optional multiple > [text]...
key: source required single lookup=dn42.registry
key: network-owner optional multiple > [parent-schema]
key: schema required single primary schema > [name]
key: ref required single > [schema]
key: namespace required single
key: primary-key optional multiple > [schema] [key]
key: namespace-owners required single > [schema]
key: mnt-by required multiple lookup=dn42.mntner > [mntner]
key: remarks optional multiple > [text]...
key: source required single lookup=dn42.registry
key: network-owner optional multiple > [parent-schema]
key: key required multiple > [key-name]
{required|optional|recommend|deprecate}
{single|multiple} {primary|} {schema|}
lookup= '>' [spec]...
mnt-by: DN42-MNT
source: DN42
remarks: # option descriptions

View File

@ -26,12 +26,12 @@ class Config:
@property
def schema(self) -> str:
"Get schema type name"
return self._dom.get("schema", default="schema").value
return self._dom.get("namespace-schema", default="schema").value
@property
def owners(self) -> str:
"Get owner type name"
return self._dom.get("owner", default="mntner").value
return self._dom.get("namespace-owner", default="mntner").value
@property
def source(self) -> str:
@ -120,10 +120,10 @@ class Config:
"Build config from parameters"
FileDOM.namespace = namespace
dom = FileDOM()
dom.src = os.path.join(path, "config")
dom.src = os.path.join(path, ".rpsl/config")
dom.put("namespace", namespace)
dom.put("schema", schema)
dom.put("owners", owners)
dom.put("namespace-schema", schema)
dom.put("namespace-owners", owners)
dom.put("default-owner", default_owner)
for (k, v) in primary_keys:
dom.put("primary-key", f"{k} {v}", append=True)

View File

@ -251,6 +251,8 @@ def index_files(path: str) -> FileDOM:
if root == path:
continue
if root.endswith(".rpsl"):
dom = FileDOM.from_file(os.path.join(root, "config"))
yield dom
continue
for f in files:

View File

@ -44,12 +44,12 @@ def run(args: List[str], env: Dict[str, str]) -> int:
return 1
rpsl_dir = env.get("WORKING_DIR")
schema_dir = os.path(rpsl_dir, "schema")
schema_dir = os.path.join(rpsl_dir, "schema")
network_owners, primary_keys = {}, {}
if os.path.exists(schema_dir):
network_owners, primary_keys = _parse_schema(schema_dir)
print(rpsl_dir)
rpsl = Config.build(path=rpsl_dir,
namespace=opts.namespace,
schema=opts.schema,