Beispiel #1
0
class Host(Object):

    name = String(
        required=True
    )

    ansible_host = String(
        serialize_when=SERIALIZE_WHEN_PRESENT
    )

    ansible_user = String(
        serialize_when=SERIALIZE_WHEN_PRESENT
    )

    ansible_password = String(
        serialize_when=SERIALIZE_WHEN_PRESENT,
        aliases=('ansible_ssh_pass',)
    )

    ansible_network_os = String(
        serialize_when=SERIALIZE_WHEN_PRESENT,
        validators=(NETWORK_OS_VALIDATOR,)
    )

    vars = Dict(
        serialize_when=SERIALIZE_WHEN_NEVER
    )

    def __init__(self, **kwargs):
        hostvars = {}
        for item in set(kwargs).difference(self._attributes):
            hostvars[item] = kwargs[item]
            kwargs.pop(item)

        if 'vars' not in kwargs:
            kwargs['vars'] = {}
        kwargs['vars'].update(hostvars)

        super(Host, self).__init__(**kwargs)

    def serialize(self):
        obj = super(Host, self).serialize()
        obj['name'] = self.name
        obj.update(self.vars)
        return obj

    def deserialize(self, ds):
        assert isinstance(ds, dict)
        obj = {}
        for name in self._attributes:
            obj[name] = ds.pop(name, None)
        super(Host, self).deserialize(obj)
        self.vars.update(ds)
Beispiel #2
0
class Play(Base, Object):

    name = String(
        serialize_when=SERIALIZE_WHEN_PRESENT
    )

    hosts = String(
        default='all'
    )

    gather_facts = Boolean(
        serialize_when=SERIALIZE_WHEN_PRESENT
    )

    tasks = TypedList(
        item_class=Task
    )
Beispiel #3
0
class Task(Base, Object):

    name = String(
        serialize_when=SERIALIZE_WHEN_PRESENT
    )

    action = String(
        required=True
    )

    args = Dict()

    vars = Dict(
        serialize_when=SERIALIZE_WHEN_PRESENT
    )

    when = String(
        serialize_when=SERIALIZE_WHEN_PRESENT
    )
class Child(Object):

    name = String(serialize_when=SERIALIZE_WHEN_NEVER)

    hosts = TypedDict(item_class=Host, item_key='name')

    vars = Dict()

    def __init__(self, **kwargs):
        childvars = {}
        for item in set(kwargs).difference(self._attributes):
            childvars[item] = kwargs[item]
            kwargs.pop(item)

        if 'vars' not in kwargs:
            kwargs['vars'] = {}
        kwargs['vars'].update(childvars)

        super(Child, self).__init__(**kwargs)
Beispiel #5
0
class DictItem(Object):
    name = String()
    value = String()
Beispiel #6
0
class ListItem(Object):
    name = String()
Beispiel #7
0
class Base(object):

    connection = String(
        serialize_when=SERIALIZE_WHEN_PRESENT
    )