Skip to content

Commit 50664bd

Browse files
Merge branch 'develop' into 'master'
Release 1.8.0 See merge request automation-sdk/f5-cloud-failover!252
2 parents 04ed8a6 + 86719fb commit 50664bd

13 files changed

Lines changed: 473 additions & 540 deletions

File tree

docs/userguide/aws.rst

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,25 @@ In order to successfully implement CFE in AWS, you need an AWS Identity and Acce
8585

8686
#. In AWS, go to **IAM > Roles** and create a policy with the following permissions:
8787

88-
- EC2 Read/Write
89-
- S3 Read/Write
90-
- STS Assume Role
88+
- ec2:DescribeInstances
89+
- ec2:DescribeInstanceStatus
90+
- ec2:DescribeAddresses
91+
- ec2:AssociateAddress
92+
- ec2:DisassociateAddress
93+
- ec2:DescribeNetworkInterfaces
94+
- ec2:DescribeNetworkInterfaceAttribute
95+
- ec2:DescribeRouteTables
96+
- ec2:AssignPrivateIpAddresses
97+
- s3:ListAllMyBuckets
98+
- ec2:UnassignPrivateIpAddresses
99+
- s3:ListBucket
100+
- s3:GetBucketTagging
101+
- s3:PutObject
102+
- s3:GetObject
103+
- s3:DeleteObject
104+
- ec2:CreateRoute
105+
- ec2:ReplaceRoute
106+
- sts:AssumeRole
91107

92108
|
93109

package-lock.json

Lines changed: 111 additions & 124 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "f5-cloud-failover",
3-
"version": "1.7.1",
3+
"version": "1.8.0",
44
"author": "F5 Networks",
55
"license": "Apache-2.0",
66
"repository": {

specs/openapi.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
openapi: "3.0.0"
22
info:
3-
version: 1.7.1
3+
version: 1.8.0
44
title: Cloud Failover (CF) Extension
55
description: F5 Cloud Failover (CFE) is an iControl LX Extension delivered as a TMOS-independent RPM file. Installing the CFE Extension on BIG-IP enables you to declaratively configure BIG-IP devices for automatic failover in cloud environments by POSTing a single JSON declaration to CF’s declarative REST API endpoint.
66
license:
@@ -21,9 +21,9 @@ paths:
2121
schema:
2222
$ref: "#/components/schemas/InformationResponse"
2323
example:
24-
version: "1.7.1"
24+
version: "1.8.0"
2525
release: "1"
26-
schemaCurrent: "1.7.1"
26+
schemaCurrent: "1.8.0"
2727
schemaMinimum: "0.9.1"
2828
default:
2929
description: Unexpected Error

src/nodejs/failover.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -759,14 +759,13 @@ class FailoverClient {
759759
*/
760760
_discoverAddresses(addresses) {
761761
const updateActions = [];
762-
updateActions.push(this.isAddressOperationsEnabled ? this.cloudProvider.updateAddresses({
762+
updateActions.push(this.isAddressOperationsEnabled ? this.cloudProvider.discoverAddresses({
763763
localAddresses: addresses.localAddresses,
764764
failoverAddresses: addresses.failoverAddresses,
765765
forwardingRules: {
766766
type: 'address',
767767
ipAddresses: addresses.failoverAddresses
768-
},
769-
discoverOnly: true
768+
}
770769
}) : {});
771770
return updateActions;
772771
}

src/nodejs/providers/abstract/cloud.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,10 @@ class AbstractCloud {
7777
throw new Error('Method must be implemented in child class!');
7878
}
7979

80+
discoverAddresses() {
81+
throw new Error('Method must be implemented in child class!');
82+
}
83+
8084
discoverAddressOperationsUsingDefinitions() {
8185
throw new Error('Method must be implemented in child class!');
8286
}

src/nodejs/providers/aws/cloud.js

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,6 @@ class Cloud extends AbstractCloud {
127127
* @param {Object} options - function options
128128
* @param {Object} [options.localAddresses] - object containing local (self) addresses [ '192.0.2.1' ]
129129
* @param {Object} [options.failoverAddresses] - object containing failover addresses [ '192.0.2.1' ]
130-
* @param {Boolean} [options.discoverOnly] - only perform discovery operation
131130
* @param {Object} [options.updateOperations] - skip discovery and perform 'these' update operations
132131
*
133132
* @returns {Object}
@@ -136,16 +135,10 @@ class Cloud extends AbstractCloud {
136135
options = options || {};
137136
const localAddresses = options.localAddresses || [];
138137
const failoverAddresses = options.failoverAddresses || [];
139-
const discoverOnly = options.discoverOnly || false;
140138
const updateOperations = options.updateOperations;
141139

142140
this.logger.silly('updateAddresses: ', options);
143141

144-
// discover only logic
145-
if (discoverOnly === true) {
146-
return this._discoverAddressOperations(localAddresses, failoverAddresses)
147-
.catch(err => Promise.reject(err));
148-
}
149142
// update only logic
150143
if (updateOperations) {
151144
return this._updateAddresses(updateOperations)
@@ -157,6 +150,24 @@ class Cloud extends AbstractCloud {
157150
.catch(err => Promise.reject(err));
158151
}
159152

153+
/**
154+
* Discover Addresses - discovers addresses
155+
*
156+
* @param {Object} options - function options
157+
* @param {Object} [options.localAddresses] - object containing local (self) addresses [ '192.0.2.1' ]
158+
* @param {Object} [options.failoverAddresses] - object containing failover addresses [ '192.0.2.1' ]
159+
*
160+
* @returns {Object}
161+
*/
162+
discoverAddresses(options) {
163+
options = options || {};
164+
const localAddresses = options.localAddresses || [];
165+
const failoverAddresses = options.failoverAddresses || [];
166+
this.logger.silly('discoverAddresses: ', options);
167+
return this._discoverAddressOperations(localAddresses, failoverAddresses)
168+
.catch(err => Promise.reject(err));
169+
}
170+
160171
/**
161172
* Discover addresses using provided definitions
162173
*

0 commit comments

Comments
 (0)