IcsUtils.JsonSubs Common Library

JsonSubs: Library for JSON Template Substitutions

This is the JsonSubs common library.
class opslib.icsutils.jsonsubs.DefaultFunc[source]

Default Functions for JsonSubs Library

__dict__ = <dictproxy object at 0x4bcbda8>
__module__ = 'opslib.icsutils.jsonsubs'
__weakref__

list of weak references to the object (if defined)

static func_base64(params)[source]

Builtin Func: Base64

{
    "$<Base64>": "xxxxxxxx"
}
static func_circle_select(index, params)[source]

Builtin Func: CSelect

{
    "$<CSelect>": [ 5, [ "apples", "grapes", "mangoes" ] ]
}
static func_include(*args)[source]

Builtin Func: Include

{
    "$<Include>": [ "a.json", "b.json" ]
}
static func_join(delimiter, params)[source]

Builtin Func: Join

{
    "$<Join>": ["-", ["a", "b", "c"] ]
}
static func_select(index, params)[source]

Builtin Func: Select

{
    "$<Select>": [ 1, [ "apples", "grapes", "mangoes" ] ]
}
class opslib.icsutils.jsonsubs.JsonSubs[source]
__dict__ = <dictproxy object at 0x51196e0>
__init__()[source]

JSON Template Substitution Library

Detail Examples:

>>> from opslib.icsutils.jsonsubs import JsonSubs
>>> engine = JsonSubs()
>>> test_data = ["-", ["a", "b", "c"]]
>>> print engine.builtin["Join"](test_data)
a-b-c
>>> import opslib
>>> from opslib.icsutils.jsonsubs import JsonSubs
>>> engine = JsonSubs()
>>> from opslib.icsec2 import IcsEc2
>>> ec2 = IcsEc2("us-west-2")
>>> func = ec2.conn.get_all_instances
>>> engine.register_builtin({"GetAllInstances": func})
>>> print engine.builtin["GetAllInstances"]()
[ Reservation:r-be459c8c,
  Reservation:r-e6822ed4,
  Reservation:r-e66dc3d4,
  Reservation:r-1608a124,
  Reservation:r-ce0da4fc ]
>>> import opslib
>>> from opslib.icsutils.jsonsubs import JsonSubs
>>> engine = JsonSubs()
>>> from opslib.icsec2 import IcsEc2
>>> ec2 = IcsEc2("us-west-2")
>>> func = ec2.get_instance_tags
>>> engine.register_builtin({"GetInstanceTags": func})
>>> default_json = {
...     "version": "1.2.0",
...     "Ids": [ "25d6d811", "12345678" ],
...     "RegionMaps": {
...         "us-east-1": { "32": "ami-xx", "64": "ami-yy" },
...         "us-west-2": { "32": "ami-xy", "64": "ami-yx" }
...     }
... }
>>> output_json = {
...     "Version": "$(version)",
...     "Id": { "$<Select>": [0, "$[Ids]"] },
...     "UserData": { "$<Base64>": "$(Id)" },
...     "Maps": "${RegionMaps}",
...     "InstanceId": { "$<Join>": [ "-", [ "i", "$(Id)" ] ] },
...     "Tags": { "$<GetInstanceTags>": "$(InstanceId)" }
... }
>>> instance_json = output_json
>>> print engine.tplsub(output_json, instance_json, default_json)
{
    "Id": "25d6d811",
    "InstanceId": "i-25d6d811",
    "Maps": {
        "us-east-1": {
            "32": "ami-xx",
            "64": "ami-yy"
        },
        "us-west-2": {
            "32": "ami-xy",
            "64": "ami-yx"
        }
    },
    "Tags": "ec2-50-112-231-217.us-west-2.compute.amazonaws.com",
    "UserData": "MjVkNmQ4MTE=",
    "Version": "1.2.0"
}
Notes:
  • Do NOT define Variables in output_json, otherwise, please merge output_json into instance_json or default_json
  • Variables should be defined in instance_json or default_json
  • If no such instance_json and default_json, take output_json also as instance_json
  • If no such Variables found in instance_json, use one in default_json
__module__ = 'opslib.icsutils.jsonsubs'
__weakref__

list of weak references to the object (if defined)

do_sub(value, instance_vars=None, default_vars=None)[source]

Execute JSON Template Substitutions

format_str(str_value, new_str)[source]
static fp_to_json(fp, **kwargs)[source]
func_mapping(map_name, *args)[source]

Builtin Func: Mapping

{
    "$<Mapping>": [ "MapName", "TopLevelKey", ... ]
}
merge_dict(key, instance_vars=None, default_vars=None)[source]
merge_list(key, instance_vars=None, default_vars=None)[source]
merge_map(key, instance_vars=None, default_vars=None)[source]
merge_str(key, instance_vars=None, default_vars=None)[source]
pattern(esc='$')[source]
register_builtin(customized_func)[source]

Register Customized Functions

Parameters:customized_func (dict) – describes customized functions to register
{
   "Join": DefaultFunc.func_join,
   "FindAMI": DefaultFunc.func_find_ami,
   "GetInstanceTags": IcsEc2.get_instance_tags
}
search(value, esc='$')[source]
static strip_comment(data)[source]
tplsub(value, instance_vars=None, default_vars=None)[source]

Entry for JSON Template Substitution (dict)

tplsub_dict(dict_value, instance_vars=None, default_vars=None)[source]
tplsub_func(func, value, instance_vars=None, default_vars=None)[source]
tplsub_list(list_value, instance_vars=None, default_vars=None)[source]
tplsub_str(str_value, instance_vars=None, default_vars=None)[source]
tplsubs(output_fp, instance_fp=None, default_fp=None)[source]

Entry for JSON Template Substitution (fp)

type_of(value)[source]
update_str(str_value, new_str, instance_vars=None, default_vars=None)[source]

Indices and tables

Table Of Contents

Previous topic

IcsUtils.JsonCli Common Library

Next topic

IcsUtils.JsonDiff Common Library

This Page