sym.sdk.resource.SRN

class sym.sdk.resource.SRN(org: str, model: str, type: Optional[str], slug: str, version: str, identifier: Optional[str] = None)

Bases: object

Sym Resource Name (SRN) is a unique identifier for a Sym Resource.

SRNs have the following structure:

<ORG>:<MODEL>[:<TYPE>]:<SLUG>:<VERSION>[:<IDENTIFIER>]

Where VERSION is either a semver string, or “latest”. And TYPE indicates the type of the model; this is often the type field of the resource defined in Terraform. For example, the type slack for an integration resource.

For example, the SRN for the v1.0.0 sym:approval template is:

sym:template:approval:1.0.0

Or the SRN for a Flow instance (with a UUID as an instance identifier) could be:

sym:flow:test-flow:0.1.0:d47782bc-88be-44df-9e34-5fae0dbdea22

Or the SRN for a Slack integration with a slug “my-integration” is:

sym:integration:slack:my-integration:latest:d47782bc-88be-44df-9e34-5fae0dbdea22

Methods

copy([organization, model, type, slug, ...])

Creates a copy of this SRN.

parse(raw)

Parses and validates the given string as an SRN.

requires_type(model)

Returns True if the given model has a type component.

Attributes

SEPARATOR

The default separator for SRN components.

SLUG_PATTERN

The pattern for validating slug components.

VERSION_PATTERN

The pattern for validating the version component.

identifier

An arbitrary string identifying an instance of the resource.

model

The model name for this SRN.

organization

The slug for the organization this SRN belongs to.

slug

This SRN's slug.

type

The model type for this SRN.

version

A semver string representing the version of this SRN.

SEPARATOR = ':'

The default separator for SRN components.

SLUG_PATTERN = re.compile('^[a-zA-Z0-9-_]+$')

The pattern for validating slug components.

VERSION_PATTERN = re.compile('^(latest|[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3})$')

The pattern for validating the version component.

copy(organization: Optional[str] = None, model: Optional[str] = None, type: Optional[str] = None, slug: Optional[str] = None, version: Optional[str] = None, identifier: Optional[str] = None)

Creates a copy of this SRN.

Optionally can create a new SRN with modified components from the current, as specified by the keyword arguments.

property identifier

An arbitrary string identifying an instance of the resource.

This is often a UUID.

property model

The model name for this SRN.

For example, for the sym:approval Template, the model name is template.

property organization

The slug for the organization this SRN belongs to.

For example, for the sym:approval Template, the organization slug is sym.

classmethod parse(raw: str) sym.sdk.resource.SRN

Parses and validates the given string as an SRN.

Parameters

raw – A raw string representing a SRN.

Returns

A SRN instance.

Raises
classmethod requires_type(model: str) bool

Returns True if the given model has a type component.

property slug

This SRN’s slug.

For example, for the sym:approval Template, the slug is approval.

property type

The model type for this SRN.

For example, for a Slack integration SRN sym:integration:slack:my-integration:latest, the type is slack.

If no type is specified, then this property will return None.

property version

A semver string representing the version of this SRN.

For example, the first version of the sym:approval Template is 1.0.0.