Beispiel #1
0
def run_module():
    argument_spec = ucs_argument_spec
    argument_spec.update(
        ntp_server=dict(type='str', aliases=['name']),
        description=dict(type='str', aliases=['descr'], default=''),
        state=dict(type='str',
                   default='present',
                   choices=['present', 'absent']),
    )

    module = AnsibleModule(
        argument_spec,
        supports_check_mode=True,
        required_if=[
            ['state', 'present', ['ntp_server']],
        ],
    )
    # UCSModule verifies ucsmsdk is present and exits on failure.  Imports are below ucs object creation.
    ucs = UCSModule(module)

    err = False

    from ucsmsdk.mometa.comm.CommNtpProvider import CommNtpProvider

    changed = False
    try:
        mo_exists = False
        props_match = False

        dn = 'sys/svc-ext/datetime-svc/ntp-' + module.params['ntp_server']

        mo = ucs.login_handle.query_dn(dn)
        if mo:
            mo_exists = True

        if module.params['state'] == 'absent':
            if mo_exists:
                if not module.check_mode:
                    ucs.login_handle.remove_mo(mo)
                    ucs.login_handle.commit()
                changed = True
        else:
            if mo_exists:
                # check top-level mo props
                kwargs = dict(descr=module.params['description'])
                if mo.check_prop_match(**kwargs):
                    props_match = True

            if not props_match:
                if not module.check_mode:
                    # update/add mo
                    mo = CommNtpProvider(
                        parent_mo_or_dn='sys/svc-ext/datetime-svc',
                        name=module.params['ntp_server'],
                        descr=module.params['description'])
                    ucs.login_handle.add_mo(mo, modify_present=True)
                    ucs.login_handle.commit()
                changed = True

    except Exception as e:
        err = True
        ucs.result['msg'] = "setup error: %s " % str(e)

    ucs.result['changed'] = changed
    if err:
        module.fail_json(**ucs.result)
    module.exit_json(**ucs.result)
Beispiel #2
0
    def create_policies(self,s_policies):
        """Policies"""

        policies = {}

        """
        NTP
        """

        ntp_servers = {}

        for key in s_policies['ntp']:
            n_dn = str(s_policies['ntp'][key]['dn'])
            n_name = str(s_policies['ntp'][key]['name'])
            n_descr = str(s_policies['ntp'][key]['descr'])

            mo = CommNtpProvider(parent_mo_or_dn=n_dn,
                                 name=n_name, descr=n_descr)


            ntp_servers.update({key: {'mo':mo}})

        policies.update({'ntp': ntp_servers})

        print "> NTP.............................................[OK]"

        """
        DNS
        """

        dns_servers = {}

        for key in s_policies['dns']:
            d_dn = str(s_policies['dns'][key]['dn'])
            d_name = str(s_policies['dns'][key]['name'])
            d_descr = str(s_policies['dns'][key]['descr'])

            mo = CommDnsProvider(parent_mo_or_dn=d_dn,
                                 name=d_name, descr=d_descr)


            dns_servers.update({key: {'mo':mo}})

        policies.update({'dns': dns_servers})

        print "> DNS.............................................[OK]"

        """
        General
        """

        general = {}

        g_dn = str(s_policies['general']['global']['dn'])
        g_backplane = str(s_policies['general']['global']['backplane'])
        g_discovery = str(s_policies['general']['global']['discovery'])

        mo = ComputeChassisDiscPolicy(parent_mo_or_dn=g_dn, name="", descr="", multicast_hw_hash="disabled",
                                        backplane_speed_pref=g_backplane, action=g_discovery,
                                        rebalance="user-acknowledged", link_aggregation_pref="none")


        general.update({'global': {'mo':mo}})

        print "> Global Policies.................................[OK]"

        policies.update({'general': general})

        return policies
handle.set_mo(timezone_mo)
handle.commit()

handle.logout()

# Add NTP Server
from ucsmsdk.ucshandle import UcsHandle
from ucsmsdk.mometa.comm.CommNtpProvider import CommNtpProvider

handle = UcsHandle("198.18.133.91", "admin", "C1sco12345")
handle.login()

timezone_mo = handle.query_dn("sys/svc-ext/datetime-svc")

ntp_provider_mo = CommNtpProvider(parent_mo_or_dn=timezone_mo, name="198.18.128.3")

handle.add_mo(ntp_provider_mo)

handle.commit()
handle.logout()

input("NTP Server Added - Press Enter to Continue to Remove NTP Server...")

# Delete NTP Server
from ucsmsdk.ucshandle import UcsHandle

handle = UcsHandle("198.18.133.91", "admin", "C1sco12345")
handle.login()

ntp_provider_mo = handle.query_dn("sys/svc-ext/datetime-svc/ntp-198.18.128.3")