Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ The CloudGenix Config Utility will default to using the SDK version. An out-of-d
#### Version
| Version | Build | Changes |
| ------- | ----- | ------- |
| **1.6.0** | **b3** | Minor bug fixes |
| **1.6.0** | **b2** | Minor bug fixes |
| | **b1** | Support for CloudGenix SDK 5.6.1b2, cellular devices, multicast, apiversion flag in cli, bugfixes
| **1.5.0** | **b2** | Back ported fix for CGCBL-847 - updated used_for (private_wan to private) in default_interfaces|
Expand Down
4 changes: 2 additions & 2 deletions cloudgenix_config/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"""
Configuration IMPORT/EXPORT common functions

**Version:** 1.6.0b2
**Version:** 1.6.0b3

**Author:** CloudGenix

Expand Down Expand Up @@ -49,7 +49,7 @@


# Version for reference
__version__ = "1.6.0b2"
__version__ = "1.6.0b3"
version = __version__

__author__ = "CloudGenix Developer Support <developers@cloudgenix.com>"
Expand Down
2 changes: 1 addition & 1 deletion cloudgenix_config/default_interfaces.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"""
Configuration IMPORT/EXPORT default device port configurations

**Version:** 1.6.0b2
**Version:** 1.6.0b3

**Author:** CloudGenix

Expand Down
59 changes: 30 additions & 29 deletions cloudgenix_config/do.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"""
Configuration IMPORT worker/script

**Version:** 1.6.0b2
**Version:** 1.6.0b3

**Author:** CloudGenix

Expand Down Expand Up @@ -137,7 +137,7 @@
FILE_TYPE_REQUIRED = "cloudgenix template"
FILE_VERSION_REQUIRED = "1.0"
SDK_VERSION_REQUIRED = '5.6.1b2'
CONFIG_VERSION_REQUIRED = '1.6.0b2'
CONFIG_VERSION_REQUIRED = '1.6.0b3'
DEFAULT_WAIT_MAX_TIME = 600 # seconds
DEFAULT_WAIT_INTERVAL = 10 # seconds
DEFAULT_ELEM_CONFIG_INTERVAL = 0 # seconds
Expand Down Expand Up @@ -1327,6 +1327,7 @@ def staged_upgrade_downgrade_element(matching_element, config_element, wait_upgr
element_id = element.get('id')
element_name = element.get('name')
element_serial = element.get('serial_number')
element_version = element.get('software_version')
element_descriptive_text = element_name if element_name else "Serial: {0}".format(element_serial) \
if element_serial else "ID: {0}".format(element_id)

Expand Down Expand Up @@ -1368,33 +1369,34 @@ def staged_upgrade_downgrade_element(matching_element, config_element, wait_upgr
backup_active_name = None
active_image_id = software_state_resp.cgx_content.get('active_image_id')

if active_image_id is None:
# attempt to pull active_image_id from status array for newer api.
prev_image_operations = software_state_resp.cgx_content.get('items')
if prev_image_operations and isinstance(prev_image_operations, list):
for prev_image_operation in prev_image_operations:
operation_active_id = prev_image_operation.get('active_image_id')
operation_active_name = prev_image_operation.get('active_version')
# if active_image_id is None:
# # attempt to pull active_image_id from status array for newer api.
# prev_image_operations = software_state_resp.cgx_content.get('items')
# if prev_image_operations and isinstance(prev_image_operations, list):
# for prev_image_operation in prev_image_operations:
# operation_active_id = prev_image_operation.get('active_image_id')
# operation_active_name = prev_image_operation.get('active_version')
#
# if operation_active_name:
# backup_active_name = operation_active_name
#
# if operation_active_id:
# active_image_id = operation_active_id
# # exit out of for loop
# break
#
# # final check
# if active_image_id is None:
# # fail
# active_image_id = ''
# throw_warning("Unable to get active image id. Continuing.. ", software_state_resp)
#
# local_debug("ACTIVE_IMAGE_ID: {0}".format(active_image_id), software_state_resp)
# local_debug("REQUESTED IMAGE {0} ID: {1}".format(elem_config_version, image_id))
# local_debug("CURRENT IMAGE IDS AVAILABLE: ", images_id2n)
#
active_image_name = str(images_id2n.get(active_image_id, element_version))

if operation_active_name:
backup_active_name = operation_active_name

if operation_active_id:
active_image_id = operation_active_id
# exit out of for loop
break

# final check
if active_image_id is None:
# fail
active_image_id = ''
throw_error("Unable to get active image id ", software_state_resp)

local_debug("ACTIVE_IMAGE_ID: {0}".format(active_image_id), software_state_resp)
local_debug("REQUESTED IMAGE {0} ID: {1}".format(elem_config_version, image_id))
local_debug("CURRENT IMAGE IDS AVAILABLE: ", images_id2n)

active_image_name = str(images_id2n.get(active_image_id, backup_active_name))
new_version, new_image_id = '', ''

if active_image_id == str(image_id):
Expand Down Expand Up @@ -7588,7 +7590,6 @@ def do_site(loaded_config, destroy, declaim=False, passed_sdk=None, passed_timeo
wait_interval=interval_timeout)

# at this point element will be claimed.

# Check elements and upgrade or downgrade if necessary
staged_upgrade_downgrade_element(matching_element, config_element, wait_upgrade_timeout=timeout_upgrade,
pause_for_upgrade=wait_upgrade,
Expand Down
4 changes: 2 additions & 2 deletions cloudgenix_config/pull.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"""
Configuration EXPORT worker/script

**Version:** 1.6.0b2
**Version:** 1.6.0b3

**Author:** CloudGenix

Expand Down Expand Up @@ -209,7 +209,7 @@
FROM_CLOUDBLADE = 0
# Fix for CGCBL-565
SDK_VERSION_REQUIRED = '5.6.1b2'
CONFIG_VERSION_REQUIRED = '1.6.0b2'
CONFIG_VERSION_REQUIRED = '1.6.0b3'
# Define constructor globally for now.
sdk = cloudgenix.API()
jd = cloudgenix.jd
Expand Down
67 changes: 67 additions & 0 deletions release_notes/1.6.0b3.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Release Notes 1.6.0b3

## Release Date
February 18, 2022

## What's new?
- Bug fixes (CGCBL-842)

## API Major Version Changes
None

## API Minor Version Changes
- elements (v2.4 to v2.5)
- interfaces (v4.10 to v4.11)
- sites (v4.5 to v4.6)
- syslogservers (v2.1 to v2.2)
- waninterfaces (v2.6 to v2.7)

## New Parameters introduced in the YAML file

elements
- admin_suspend_state
- fips_mode
- fips_mode_change_start_time

interfaces:
- cellular_config
- multicast_config
```
multicast_config:
igmp_version: IGMPV3
multicast_enabled: false
```

sites
- security_policysetstack_id

syslog
- remote_ca_certificate
- server_fqdn
- syslog_profile_id

waninterfaces:
- use_lqm_for_non_hub_paths


## Caveats

ION 9000:

- When trying to configure bypasspairs and interfaces of type port having the same name i.e. 12,13,14,15 or 16, the configuration must be pushed in two steps
- Step 1: Configure interface of type port first - only include interface configuration for type port in the YAML file.
- Step 2: Configure interface of type bypasspair - only include interface configuration for type bypasspair in the YAML file

- When the source interface or the parent interface is of type byppasspair and another interface of type port with the same name exist, set the attribute **parent_type** to **bypasspair_<interface_name>**. This helps the utility correctly identify the interface between the bypasspair and port of the same name. If the parent_type is not set, the utility assume the parent interface is of type port in case of conflicts.


## More Info

- Prisma SD-WAN Release Notes

<https://docs.paloaltonetworks.com/prisma/prisma-sd-wan/prisma-sd-wan-release-notes.html>

- Prisma SDWAN Documentation

<https://docs.paloaltonetworks.com/prisma/prisma-sd-wan.html>

2 changes: 1 addition & 1 deletion setup.cfg
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[metadata]
name = cloudgenix_config
description = Configuration exporting and Continuous Integration (CI) capable configuration importing for the CloudGenix Cloud Controller.
version = 1.6.0b2
version = 1.6.0b3
author = CloudGenix Developer Support
author-email = developers@cloudgenix.com
description-file = README.md
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
long_description = f.read()

setup(name='cloudgenix_config',
version='1.6.0b2',
version='1.6.0b3',
description='Configuration exporting and Continuous Integration (CI) capable configuration importing for the '
'CloudGenix Cloud Controller.',
long_description=long_description,
Expand Down