Ejemplo n.º 1
0
def DslVMOperationsRunbook():
    "Runbook Service example"

    Task.VMPowerOff(name="VM Power Off Task",
                    target=ref(Endpoint.use_existing("VMEndpoint")))
    Task.VMPowerOn(name="VM Power On Task",
                   target=ref(Endpoint.use_existing("VMEndpoint")))
    Task.VMRestart(name="VM Restart Task",
                   target=ref(Endpoint.use_existing("VMEndpoint")))
Ejemplo n.º 2
0
def DslDecisionRunbook():
    """
    Runbook example with decision task
    Decision tasks can be defined in 2 ways
    1. with Task.Decision() as d:
        if d.ok:
            true_path
        else:
            false_path
    2. with Task.Decision() as d:
        if d.exit_code == 0:
            true_path
        if d.exit_code == 1:
            false_path
    """

    with Task.Decision.ssh(
        name="DecisionTask",
        script="cat hell",
        target=ref(Endpoint.use_existing("DslEndpoint")),
    ) as d:

        if d.ok:
            Task.Exec.escript(
                name="Task1", script="print 'Decision Task is Successful'"
            )

        else:
            Task.Exec.escript(name="Task2", script="print 'Decision Task Failed'")
Ejemplo n.º 3
0
def DslExistingEndpoint():
    """
    Runbook example for using existing endpoint
    Existing endpoint as target can be given as 'Endpoint.use_existing(<ep-name>)'
    Existing endpoints are not allowed in endpoints argument in runbook creation
    """

    Task.Exec.ssh(
        name="Task1",
        script='echo "hello"',
        target=ref(Endpoint.use_existing("DslEndpoint")),
    )
Ejemplo n.º 4
0
def DslSetVariableRunbook():
    "Runbook example with Set Variable Tasks"

    Task.SetVariable.escript(name="Task1",
                             filename=os.path.join(
                                 "scripts", "set_variable_task1_script.py"),
                             variables=["var1"])
    Task.SetVariable.ssh(name="Task2",
                         filename=os.path.join("scripts",
                                               "set_variable_task2_script.sh"),
                         variables=["var2"],
                         target=ref(Endpoint.use_existing("linux_bedag")))
    Task.Exec.escript(name="Task3", script="print '@@{var1}@@ @@{var2}@@'")
Ejemplo n.º 5
0
    ".tests/runbook_tests/vmware_linux_vm_name_prefix"
)

CRED_USERNAME = read_local_file(".tests/runbook_tests/username")
CRED_WINDOWS_USERNAME = read_local_file(".tests/runbook_tests/windows_username")
CRED_PASSWORD = read_local_file(".tests/runbook_tests/password")

HTTP_AUTH_USERNAME = read_local_file(".tests/runbook_tests/auth_username")
HTTP_AUTH_PASSWORD = read_local_file(".tests/runbook_tests/auth_password")
HTTP_URL = read_local_file(".tests/runbook_tests/url")

VMWARE_ACCOUNT_NAME = get_vmware_account_from_datacenter()

http_endpoint = Endpoint.HTTP(
    HTTP_URL,
    verify=False,
    auth=Endpoint.Auth(HTTP_AUTH_USERNAME, HTTP_AUTH_PASSWORD),
)

LinuxCred = basic_cred(CRED_USERNAME, CRED_PASSWORD, name="endpoint_cred")
WindowsCred = basic_cred(CRED_WINDOWS_USERNAME, CRED_PASSWORD, name="endpoint_cred")

linux_endpoint = Endpoint.Linux.ip([linux_ip], cred=LinuxCred)

# Linux AHV VM Endpoint with static VM ID values
linux_ahv_static_vm_endpoint = Endpoint.Linux.vm(
    vms=[Ref.Vm(uuid=AHV_LINUX_ID)],
    cred=LinuxCred,
    account=Ref.Account("NTNX_LOCAL_AZ"),
)
Ejemplo n.º 6
0
"""
Calm HTTP Endpoint Sample with Auth
"""
from calm.dsl.runbooks import read_local_file
from calm.dsl.runbooks import CalmEndpoint as Endpoint

AUTH_USERNAME = read_local_file(".tests/runbook_tests/auth_username")
AUTH_PASSWORD = read_local_file(".tests/runbook_tests/auth_password")
URL = read_local_file(".tests/runbook_tests/url")

DslHTTPEndpoint = Endpoint.HTTP(URL,
                                verify=True,
                                auth=Endpoint.Auth(AUTH_USERNAME,
                                                   AUTH_PASSWORD))
Ejemplo n.º 7
0
linux_ip = read_local_file(".tests/runbook_tests/vm_ip")
windows_ip = read_local_file(".tests/runbook_tests/windows_vm_ip")
CRED_USERNAME = read_local_file(".tests/runbook_tests/username")
CRED_WINDOWS_USERNAME = read_local_file(".tests/runbook_tests/windows_username")
CRED_PASSWORD = read_local_file(".tests/runbook_tests/password")
URL = read_local_file(".tests/runbook_tests/url")
AUTH_USERNAME = read_local_file(".tests/runbook_tests/auth_username")
AUTH_PASSWORD = read_local_file(".tests/runbook_tests/auth_password")

LinuxCred = basic_cred(CRED_USERNAME, CRED_PASSWORD, name="linux_cred")
WindowsCred = basic_cred(CRED_WINDOWS_USERNAME, CRED_PASSWORD, name="windows_cred")

linux_endpoint = Endpoint.Linux.ip([linux_ip], cred=LinuxCred)
windows_endpoint = Endpoint.Windows.ip([windows_ip], cred=WindowsCred)
http_endpoint = Endpoint.HTTP(
    URL, verify=False, auth=Endpoint.Auth(AUTH_USERNAME, AUTH_PASSWORD)
)


@runbook
def WhileTask(endpoints=[linux_endpoint, windows_endpoint, http_endpoint]):
    "Runbook Service example"
    with Task.Loop(10, exit_condition=Status.SUCCESS):
        with Task.Decision.ssh(name="Task1", script="exit 0", target=endpoints[0]) as d:

            if d.ok:
                Task.Exec.ssh(
                    name="SUCCESS1", script="echo 'SUCCESS'", target=endpoints[0]
                )

            else:
Ejemplo n.º 8
0
from calm.dsl.runbooks import read_local_file
from calm.dsl.runbooks import runbook
from calm.dsl.runbooks import RunbookTask as Task, RunbookVariable as Variable
from calm.dsl.runbooks import CalmEndpoint as Endpoint
from calm.dsl.config import get_config
from utils import read_test_config, change_uuids

AUTH_USERNAME = read_local_file(".tests/runbook_tests/auth_username")
AUTH_PASSWORD = read_local_file(".tests/runbook_tests/auth_password")
URL = read_local_file(".tests/runbook_tests/url")

config = get_config()
TEST_URL = "https://{}:9440/".format(config["SERVER"]["pc_ip"])

endpoint = Endpoint.HTTP(URL,
                         verify=False,
                         auth=Endpoint.Auth(AUTH_USERNAME, AUTH_PASSWORD))
endpoint_with_tls_verify = Endpoint.HTTP(URL,
                                         verify=True,
                                         auth=Endpoint.Auth(
                                             AUTH_USERNAME, AUTH_PASSWORD))
endpoint_with_incorrect_auth = Endpoint.HTTP(URL, verify=False)
endpoint_without_auth = Endpoint.HTTP(TEST_URL)


def get_http_task_runbook():
    """returns the runbook for http task"""

    global endpoint_payload
    endpoint_payload = change_uuids(
        read_test_config(file_name="http_endpoint_payload.json"), {})
Ejemplo n.º 9
0
"""
Calm HTTP Endpoint Sample without Auth
"""
from calm.dsl.runbooks import read_local_file
from calm.dsl.runbooks import CalmEndpoint as Endpoint

URL = read_local_file(".tests/runbook_tests/url")
DslHTTPEndpoint = Endpoint.HTTP(
    URL, retries=1, retry_interval=2, timeout=50, verify=True
)


def main():
    print(DslHTTPEndpoint.json_dumps(pprint=True))


if __name__ == "__main__":
    main()
Ejemplo n.º 10
0
from utils import read_test_config, change_uuids, get_project_id_from_name

linux_ip = read_local_file(".tests/runbook_tests/vm_ip")
windows_ip = read_local_file(".tests/runbook_tests/windows_vm_ip")
CRED_USERNAME = read_local_file(".tests/runbook_tests/username")
CRED_WINDOWS_USERNAME = read_local_file(
    ".tests/runbook_tests/windows_username")
CRED_PASSWORD = read_local_file(".tests/runbook_tests/password")

HTTP_AUTH_USERNAME = read_local_file(".tests/runbook_tests/auth_username")
HTTP_AUTH_PASSWORD = read_local_file(".tests/runbook_tests/auth_password")
HTTP_URL = read_local_file(".tests/runbook_tests/url1")

RBAC_PROJECT = read_local_file(".tests/runbook_tests/rbac_project")

http_endpoint = Endpoint.HTTP(HTTP_URL, verify=True)

LinuxCred = basic_cred(CRED_USERNAME, CRED_PASSWORD, name="endpoint_cred")
WindowsCred = basic_cred(CRED_WINDOWS_USERNAME,
                         CRED_PASSWORD,
                         name="endpoint_cred")

linux_endpoint = Endpoint.Linux.ip([linux_ip], cred=LinuxCred)
windows_endpoint = Endpoint.Windows.ip([windows_ip], cred=WindowsCred)

escript_code = """
print "@@{var1}@@"
if "@@{var1}@@" == "test":
    print "yes"
else:
    print "no"
Ejemplo n.º 11
0
"""
Calm DSL Entity Stats Runbook

"""
import json

from calm.dsl.runbooks import runbook, runbook_json
from calm.dsl.runbooks import RunbookTask as Task, RunbookVariable as Variable
from calm.dsl.runbooks import CalmEndpoint as Endpoint

PCEndpoint = Endpoint.HTTP("https://*****:*****@@{endpoints_count}@@"
print "Blueprint Count  - @@{blueprints_count}@@"
print "Runbook Count    - @@{runbooks_count}@@"
print "Apps Count       - @@{apps_count}@@"
"""


@runbook
def DslEntityStatsRunbook(endpoints=[PCEndpoint]):

    "Example runbook for getting count of calm entities on PC"
    endpoints_count = Variable.Simple.int("0")  # noqa
    blueprints_count = Variable.Simple.int("0")  # noqa
    runbooks_count = Variable.Simple.int("0")  # noqa
    apps_count = Variable.Simple.int("0")  # noqa

    Task.HTTP.post(
Ejemplo n.º 12
0
  9. calm pause runbook_execution <RUNLOG_UUID>
  10. calm resume runbook_execution <RUNLOG_UUID>
  11. calm abort runbook_execution <RUNLOG_UUID>

"""
import json

from calm.dsl.runbooks import RunbookVariable as Variable
from calm.dsl.runbooks import RunbookTask as Task, CalmEndpoint as Endpoint
from calm.dsl.runbooks import runbook, basic_cred
from calm.dsl.runbooks import parallel, branch


# Create Endpoints
Cred = basic_cred("vm_username", "vm_password", name="endpoint_cred")
PCEndpoint = Endpoint.HTTP("https://10.42.64.39:9440/api/nutanix/v3")
IPEndpoint = Endpoint.Linux.ip(["VM_IP"], cred=Cred)


@runbook
def Hello(endpoints=[PCEndpoint, IPEndpoint]):
    """ Sample runbook for Hello """

    # Defining variables for entity counts
    endpoints_count  = Variable.Simple.int("0", runtime=True)  # noqa
    blueprints_count = Variable.Simple.int("0", runtime=True)  # noqa
    runbooks_count   = Variable.Simple.int("0", runtime=True)  # noqa
    apps_count       = Variable.Simple.int("0", runtime=True)  # noqa

    # HTTP Tasks to get CALM Entity Counts
    # default target is set as endpoints[0] = PCEndpoint, therefore target not required for http tasks
Ejemplo n.º 13
0
from calm.dsl.runbooks import RunbookTask as Task, RunbookVariable as Variable
from calm.dsl.runbooks import CalmEndpoint as Endpoint
from calm.dsl.config import get_context
from utils import read_test_config, change_uuids

AUTH_USERNAME = read_local_file(".tests/runbook_tests/auth_username")
AUTH_PASSWORD = read_local_file(".tests/runbook_tests/auth_password")
URL = read_local_file(".tests/runbook_tests/url")

ContextObj = get_context()
server_config = ContextObj.get_server_config()
pc_ip = server_config["pc_ip"]
TEST_URL = "https://{}:9440/".format(pc_ip)

endpoint = Endpoint.HTTP(
    URL, verify=False, auth=Endpoint.Auth(AUTH_USERNAME, AUTH_PASSWORD)
)
endpoint_with_tls_verify = Endpoint.HTTP(
    URL, verify=True, auth=Endpoint.Auth(AUTH_USERNAME, AUTH_PASSWORD)
)
endpoint_with_incorrect_auth = Endpoint.HTTP(URL, verify=False)
endpoint_without_auth = Endpoint.HTTP(TEST_URL)
endpoint_with_multiple_urls = Endpoint.HTTP(
    ["@@{base}@@/endpoints", "@@{base}@@/blueprints", "@@{base}@@/runbooks"],
    auth=Endpoint.Auth(AUTH_USERNAME, AUTH_PASSWORD),
)


def get_http_task_runbook():
    """returns the runbook for http task"""