-
Notifications
You must be signed in to change notification settings - Fork 61
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Test: Adding integration tests for cv_device_v3 #621
Changes from 10 commits
3874d7d
3a7a02b
d346824
7abdaea
4f3b398
9683160
060a980
a3155fb
0968b78
3db220d
20e2d6a
3bbb648
3ba5780
87d3c82
9da93f4
79b1a3f
4f6aa67
a10ac4f
6e040e4
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
--- | ||
- name: Run cv_device_v3 | ||
import_playbook: test_cv_device_v3.yaml |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
--- | ||
scenario: | ||
test_sequence: | ||
- converge | ||
driver: | ||
name: delegated | ||
platforms: | ||
- name: dummy | ||
managed: false | ||
provisioner: | ||
name: ansible | ||
config_options: | ||
defaults: | ||
jinja2_extensions: 'jinja2.ext.loopcontrols,jinja2.ext.do,jinja2.ext.i18n' | ||
gathering: explicit | ||
command_warnings: False | ||
remote_tmp: /tmp/.ansible-${USER}/tmp | ||
stdout_callback: yaml | ||
playbooks: | ||
converge: converge.yml | ||
ansible_args: | ||
- --inventory | ||
- ${MOLECULE_SCENARIO_DIRECTORY}/../../examples/inventory.yml | ||
verifier: | ||
name: ansible |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,308 @@ | ||
--- | ||
- name: Test cv_device_v3 | ||
hosts: CloudVision | ||
connection: local | ||
gather_facts: no | ||
vars: | ||
CVP_DEVICES_MOVE_DEVICE: | ||
- fqdn: leaf1 | ||
parentContainerName: "Leaf" | ||
|
||
CVP_DEVICES_PARENT_CONTAINER_NONE: | ||
- fqdn: leaf1 | ||
parentContainerName: None | ||
|
||
CVP_DEVICES_PARENT_CONTAINER_SAME: | ||
- fqdn: leaf1 | ||
parentContainerName: "Leaf" | ||
CVP_DEVICES_STATE_ABSENT: | ||
Shivani-chourasiya marked this conversation as resolved.
Show resolved
Hide resolved
|
||
- fqdn: leaf2 | ||
parentContainerName: "" | ||
|
||
CVP_DEVICES_FACT0RY_RESET: | ||
- fqdn: leaf2 | ||
parentContainerName: "" | ||
|
||
CVP_DEVICES_PROVISIONING_RESET: | ||
- fqdn: leaf3 | ||
parentContainerName: "" | ||
|
||
CVP_DEVICES_BUNDLE_ATTACHED: | ||
- serialNumber: JPE504a004ea054 | ||
parentContainerName: L2_Leaf | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Did we create this container or is it something that is assumed to exist on ATD by default? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. fixed |
||
configlets: | ||
- 'AVD_Ipmi3' | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can we use a custom configlet and not what we assume to already be present on ATD? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. fixed |
||
imageBundle: leaf_bundle | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can we upload an image and then use it here instead of using something that's already present on ATD? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. fixed |
||
|
||
CVP_DEVICES_BUNDLE_DETACHED: | ||
- serialNumber: JPE504a004ea054 | ||
parentContainerName: L2_Leaf | ||
configlets: | ||
- 'AVD_Ipmi3' | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Same comment as above There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. fixed |
||
|
||
CVP_CONFIGLETS: | ||
configlet1: '! This is first configlet' | ||
configlet2: '! This is second configlet' | ||
|
||
CVP_DEVICES_APPLY_CONFIGLET: | ||
- fqdn: leaf1 | ||
parentContainerName: "Leaf" | ||
configlets: | ||
- 'configlet1' | ||
- 'configlet2' | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. upload these configlets before attaching please There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. fixed |
||
|
||
CVP_DEVICES_DETACH_CONFIGLET: | ||
- fqdn: leaf1 | ||
parentContainerName: "Leaf" | ||
|
||
CVP_DEVICES_DEPLOY: | ||
- fqdn: leaf3 # leaf1 must be in undefined container | ||
parentContainerName: "pod2" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This container doesn't exist on ATD. Please create container and then deploy it there. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. fixed |
||
|
||
tasks: | ||
##################################### | ||
## MOVE DEVICE ## | ||
##################################### | ||
|
||
- name: Run CV_DEVICE_V3 To Move Device | ||
arista.cvp.cv_device_v3: | ||
devices: '{{CVP_DEVICES_MOVE_DEVICE}}' | ||
state: present | ||
register: MOVE_DEVICE_RUN | ||
|
||
- name: Check Move Device | ||
assert: | ||
that: | ||
- "MOVE_DEVICE_RUN.devices_moved.changed == true" | ||
- "MOVE_DEVICE_RUN.devices_moved.devices_moved_count == 1" | ||
- "MOVE_DEVICE_RUN.devices_moved.devices_moved_list == ['leaf1_to_Leaf']" | ||
- "MOVE_DEVICE_RUN.devices_moved.success == true" | ||
- "MOVE_DEVICE_RUN.failed == false" | ||
|
||
- name: Run CV_DEVICE_V3 To Move Device With Parent Container None | ||
arista.cvp.cv_device_v3: | ||
devices: '{{CVP_DEVICES_PARENT_CONTAINER_NONE}}' | ||
state: present | ||
ignore_errors: yes | ||
register: MOVE_DEVICE_NONE | ||
|
||
- name: Negative Test Check Move Device With Parent Container None | ||
assert: | ||
that: | ||
- MOVE_DEVICE_NONE.msg == "The target container 'None' for the device 'leaf1' does not exist on CVP." | ||
- MOVE_DEVICE_NONE.changed == false | ||
- MOVE_DEVICE_NONE.failed == true | ||
|
||
- name: Run CV_DEVICE_V3 To Move Device With Parent Container Same | ||
arista.cvp.cv_device_v3: | ||
devices: '{{CVP_DEVICES_PARENT_CONTAINER_SAME}}' | ||
state: present | ||
ignore_errors: yes | ||
register: MOVE_DEVICE | ||
|
||
- name: Negative Test Check Move Device With With Parent Container Same | ||
assert: | ||
that: | ||
- MOVE_DEVICE.devices_moved.changed == false | ||
- MOVE_DEVICE.devices_moved.devices_moved_count == 0 | ||
- MOVE_DEVICE.devices_moved.devices_moved_list == [] | ||
- MOVE_DEVICE.devices_moved.success == false | ||
- MOVE_DEVICE.failed == false | ||
- MOVE_DEVICE.taskIds: [] | ||
|
||
###################################### | ||
## STATE ABSENT (DECOMMISSION) ## | ||
###################################### | ||
- name: Run CV_DEVICE_V3 With State Absent | ||
arista.cvp.cv_device_v3: | ||
devices: '{{CVP_DEVICES_STATE_ABSENT}}' | ||
state: absent | ||
register: DECOMMISSION_DEVICE | ||
- assert: | ||
that: | ||
- DECOMMISSION_DEVICE.devices_decommissioned.changed == true | ||
- DECOMMISSION_DEVICE.devices_decommissioned.devices_decommissioned_count == 0 | ||
- DECOMMISSION_DEVICE.devices_decommissioned.devices_decommissioned_list == ['leaf2_delete'] | ||
- DECOMMISSION_DEVICE.devices_decommissioned.success == true | ||
- DECOMMISSION_DEVICE.devices_decommissioned.taskIds == [] | ||
- DECOMMISSION_DEVICE.failed == false | ||
|
||
- name: Run CV_DEVICE_V3 With State Absent # when device does not exist in CVP | ||
arista.cvp.cv_device_v3: | ||
devices: '{{CVP_DEVICES_STATE_ABSENT}}' | ||
state: absent | ||
ignore_errors: yes | ||
register: DECOMMISSION_DEVICE_ABSENT | ||
- assert: | ||
that: | ||
- DECOMMISSION_DEVICE_ABSENT.changed == false | ||
- DECOMMISSION_DEVICE_ABSENT.failed == true | ||
- DECOMMISSION_DEVICE_ABSENT.msg == "Error - the following devices do not exist in CVP ['leaf2'] but are defined in the playbook. Make sure that the devices are provisioned and defined with the full fqdn name (including the domain name) if needed." | ||
|
||
###################################### | ||
## STATE FACTORY RESET ## | ||
###################################### | ||
- name: Run CV_DEVICE_V3 With State Factory reset | ||
arista.cvp.cv_device_v3: | ||
devices: '{{CVP_DEVICES_FACT0RY_RESET}}' | ||
state: factory_reset | ||
register: FACTORY_RESET_RESULT | ||
|
||
# it does not move device to undefined container, just creates a task on CVP | ||
|
||
- name: Check State Factory reset | ||
assert: | ||
that: | ||
- FACTORY_RESET_RESULT.devices_reset.changed == true | ||
- FACTORY_RESET_RESULT.devices_reset.devices_reset_count == 1 | ||
- FACTORY_RESET_RESULT.devices_reset.devices_reset_list == ['leaf2_reset'] | ||
- FACTORY_RESET_RESULT.devices_reset.success == true | ||
- FACTORY_RESET_RESULT.devices_reset.taskIds is defined | ||
- FACTORY_RESET_RESULT.failed == false | ||
- FACTORY_RESET_RESULT.success == true | ||
|
||
###################################### | ||
## STATE PROVISIONING RESET ## | ||
###################################### | ||
|
||
- name: Run CV_DEVICE_V3 With State Provisioning Reset | ||
arista.cvp.cv_device_v3: | ||
devices: '{{CVP_DEVICES_PROVISIONING_RESET}}' | ||
state: provisioning_reset | ||
register: PROVISIONING_RESET_RESULT | ||
|
||
# if we try to delete the same device again(already in undefined container), it does not raise any error and gives the same result | ||
|
||
- name: check provisioning reset | ||
assert: | ||
that: | ||
- PROVISIONING_RESET_RESULT.devices_removed.changed == true | ||
- PROVISIONING_RESET_RESULT.devices_removed.devices_removed_count == 1 | ||
- PROVISIONING_RESET_RESULT.devices_removed. devices_removed_list == ['leaf3_delete'] | ||
- PROVISIONING_RESET_RESULT.devices_removed.success == true | ||
- PROVISIONING_RESET_RESULT.devices_removed.taskIds is defined | ||
- PROVISIONING_RESET_RESULT.failed == false | ||
- PROVISIONING_RESET_RESULT.success == true | ||
|
||
################################# | ||
## ASSIGN/REMOVE BUNDLE ## | ||
################################# | ||
|
||
- name: "Attach bundle on {{inventory_hostname}}" | ||
arista.cvp.cv_device_v3: | ||
devices: '{{CVP_DEVICES_BUNDLE_ATTACHED}}' | ||
state: present | ||
search_key: serialNumber | ||
apply_mode: strict | ||
register: ATTACH_BUNDLE | ||
|
||
- name: "Check attach bundle" | ||
assert: | ||
that: | ||
- ATTACH_BUNDLE.bundle_attached.changed == true | ||
- ATTACH_BUNDLE.bundle_attached.bundle_attached_count == 1 | ||
- ATTACH_BUNDLE.bundle_attached.bundle_attached_list != [] | ||
- ATTACH_BUNDLE.bundle_attached.success == true | ||
- ATTACH_BUNDLE.bundle_attached.taskIds != [] | ||
|
||
- name: "Detach bundle on {{inventory_hostname}}" | ||
arista.cvp.cv_device_v3: | ||
devices: '{{CVP_DEVICES_BUNDLE_DETACHED}}' | ||
state: present | ||
search_key: serialNumber | ||
apply_mode: strict | ||
register: DETACH_BUNDLE | ||
|
||
- name: "Check detach bundle" | ||
assert: | ||
that: | ||
- DETACH_BUNDLE.bundle_detached.changed == true | ||
- DETACH_BUNDLE.bundle_detached.bundle_detached_count == 1 | ||
- DETACH_BUNDLE.bundle_detached.bundle_detached_list != [] | ||
- DETACH_BUNDLE.bundle_detached.success == true | ||
|
||
################################# | ||
## APPLY/DETACH CONFIGLET ## | ||
################################# | ||
|
||
- name: "Push config" | ||
arista.cvp.cv_configlet_v3: | ||
configlets: "{{CVP_CONFIGLETS}}" | ||
state: present | ||
register: CV_CONFIGLET | ||
|
||
- name: "Apply configlet on {{inventory_hostname}}" | ||
arista.cvp.cv_device_v3: | ||
devices: '{{CVP_DEVICES_APPLY_CONFIGLET}}' | ||
state: present | ||
search_key: fqdn | ||
register: CV_DEVICE_V3_RESULT | ||
|
||
- name: "Check apply_configlet with apply_mode loose" | ||
assert: | ||
that: | ||
- CV_DEVICE_V3_RESULT.changed == true | ||
- CV_DEVICE_V3_RESULT.configlets_attached.changed == true | ||
- CV_DEVICE_V3_RESULT.configlets_attached.configlets_attached_count == 2 | ||
- CV_DEVICE_V3_RESULT.configlets_attached.configlets_attached_list == ["leaf1_configlet_attached"] | ||
- CV_DEVICE_V3_RESULT.configlets_attached.success == true | ||
- CV_DEVICE_V3_RESULT.configlets_attached.taskIds != [] | ||
|
||
- name: "Apply same configlet again on {{inventory_hostname}}" | ||
arista.cvp.cv_device_v3: | ||
devices: '{{CVP_DEVICES_APPLY_CONFIGLET}}' | ||
state: present | ||
register: CV_DEVICE_V3_RESULT | ||
|
||
- name: "Check apply_configlet with same configlets" | ||
assert: | ||
that: | ||
- CV_DEVICE_V3_RESULT.changed == false | ||
- CV_DEVICE_V3_RESULT.configlets_attached.changed == false | ||
- CV_DEVICE_V3_RESULT.configlets_attached.configlets_attached_count == 0 | ||
- CV_DEVICE_V3_RESULT.configlets_attached.configlets_attached_list == [] | ||
- CV_DEVICE_V3_RESULT.configlets_attached.success == false | ||
- CV_DEVICE_V3_RESULT.configlets_attached.taskIds == [] | ||
|
||
- name: "Detach configlet from {{inventory_hostname}}" | ||
arista.cvp.cv_device_v3: | ||
devices: '{{CVP_DEVICES_DETACH_CONFIGLET}}' | ||
state: present | ||
apply_mode: strict | ||
register: CV_DEVICE_V3_RESULT | ||
|
||
- name: "Check detach_configlet with apply_mode strict" | ||
assert: | ||
that: | ||
- CV_DEVICE_V3_RESULT.changed == true | ||
- CV_DEVICE_V3_RESULT.configlets_detached.changed == true | ||
- CV_DEVICE_V3_RESULT.configlets_detached.configlets_detached_count == 2 | ||
- CV_DEVICE_V3_RESULT.configlets_detached.configlets_detached_list == ["leaf1_configlet_removed - configlet1 - configlet2"] | ||
- CV_DEVICE_V3_RESULT.configlets_detached.success == true | ||
- CV_DEVICE_V3_RESULT.configlets_detached.taskIds != [] | ||
|
||
- name: "Delete config" | ||
arista.cvp.cv_configlet_v3: | ||
configlets: "{{CVP_CONFIGLETS}}" | ||
state: absent | ||
register: DELETE_CONFIGLET_RESULT | ||
|
||
################################# | ||
## DEPLOY DEVICE ## | ||
################################# | ||
|
||
- name: "Deploy device on {{inventory_hostname}}" | ||
arista.cvp.cv_device_v3: | ||
devices: '{{CVP_DEVICES_DEPLOY}}' | ||
state: present | ||
register: CV_DEVICE_V3_RESULT | ||
|
||
- name: "Check deploy_device" | ||
assert: | ||
that: | ||
- CV_DEVICE_V3_RESULT.changed == true | ||
- CV_DEVICE_V3_RESULT.devices_deployed.changed == true | ||
- CV_DEVICE_V3_RESULT.devices_deployed.devices_deployed_count == 1 | ||
- CV_DEVICE_V3_RESULT.devices_deployed.devices_deployed_list == ["leaf3_deployed"] | ||
- CV_DEVICE_V3_RESULT.devices_deployed.success == true | ||
- CV_DEVICE_V3_RESULT.devices_deployed.taskIds != [] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's create a new container and then move it there.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed