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")))
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'")
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")), )
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}@@'")
".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"), )
""" 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))
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:
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"), {})
""" 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()
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"
""" 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(
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
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"""