81 lines
3.5 KiB
Python
81 lines
3.5 KiB
Python
# Copyright (c) 2021 Arista Networks, Inc.
|
|
# Use of this source code is governed by the Apache License 2.0
|
|
# that can be found in the COPYING file.
|
|
#
|
|
# NOTE: The following example is using the new Change Control Resource APIs supported in 2021.2.0 or newer and in CVaaS.
|
|
# For CVaaS service-account token based auth has to be used.
|
|
|
|
from cvprac.cvp_client import CvpClient
|
|
import ssl
|
|
import uuid
|
|
from datetime import datetime
|
|
ssl._create_default_https_context = ssl._create_unverified_context
|
|
import requests.packages.urllib3
|
|
requests.packages.urllib3.disable_warnings()
|
|
|
|
# Create connection to CloudVision
|
|
clnt = CvpClient()
|
|
clnt.connect(['cvp1'],'username', 'password')
|
|
|
|
|
|
cc_id = str(uuid.uuid4())
|
|
name = f"Change_{datetime.now().strftime('%Y%m%d_%H%M%S')}"
|
|
|
|
# Create custom stage hierarchy
|
|
# The below example would result in the following hierarchy:
|
|
# root (series)
|
|
# |- stages 1-2 (series)
|
|
# | |- stage 1ab (parallel)
|
|
# | | |- stage 1a
|
|
# | | |- stage 1b
|
|
# | |- stage 2
|
|
# |- stage 3
|
|
data = {'key': {
|
|
'id': cc_id
|
|
},
|
|
'change': {
|
|
'name': cc_id,
|
|
'notes': 'cvprac CC',
|
|
'rootStageId': 'root',
|
|
'stages': {'values': {'root': {'name': 'root',
|
|
'rows': {'values': [{'values': ['1-2']},
|
|
{'values': ['3']}]
|
|
}
|
|
},
|
|
'1-2': {'name': 'stages 1-2',
|
|
'rows': {'values': [{'values': ['1ab']},
|
|
{'values': ['2']}]}},
|
|
'1ab': {'name': 'stage 1ab',
|
|
'rows': {'values': [{'values': ['1a','1b']}]
|
|
}
|
|
},
|
|
'1a': {'action': {'args': {'values': {'TaskID': '1242'}},
|
|
'name': 'task',
|
|
'timeout': 3000},
|
|
'name': 'stage 1a'},
|
|
'1b': {'action': {'args': {'values': {'TaskID': '1243'}},
|
|
'name': 'task',
|
|
'timeout': 3000},
|
|
'name': 'stage 1b'},
|
|
'2': {'action': {'args': {'values': {'TaskID': '1240'}},
|
|
'name': 'task',
|
|
'timeout': 3000},
|
|
'name': 'stage 2'},
|
|
'3': {'action': {'args': {'values': {'TaskID': '1241'}},
|
|
'name': 'task',
|
|
'timeout': 3000},
|
|
'name': 'stage 3'},
|
|
}
|
|
}
|
|
}
|
|
}
|
|
# Create change control from custom stage hierarchy data
|
|
clnt.api.change_control_create_with_custom_stages(data)
|
|
|
|
# Approve the change control
|
|
approval_note = "Approve CC via cvprac" # notes are optional
|
|
clnt.api.change_control_approve(cc_id, notes=approval_note)
|
|
|
|
# Start the change control
|
|
start_note = "Starting CC via cvprac" # notes are optional
|
|
clnt.api.change_control_start(cc_id, notes=start_note)
|