Completed
Pull Request — master (#564)
by
unknown
02:22
created

SuggestNextIp   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 34
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
dl 0
loc 34
rs 10
c 1
b 0
f 1
wmc 9

1 Method

Rating   Name   Duplication   Size   Complexity  
F run() 0 33 9
1
from st2actions.runners.pythonrunner import Action
2
import requests
3
4
5
class SuggestNextIp(Action):
6
    def run(self, subnet_id=None, subnet=None, name=None, vrf_group_id=None, vrf_group=None,
7
            reserved_ip=None):
8
        d42_server = self.config.get('d42_server', None)
9
        if not d42_server:
10
            raise ValueError('"d42_server" config value is required')
11
12
        d42_username = self.config.get('d42_username', None)
13
        if not d42_username:
14
            raise ValueError('"d42_username" config value is required')
15
16
        d42_password = self.config.get('d42_password', None)
17
        if not d42_password:
18
            raise ValueError('"d42_password" config value is required')
19
20
        protocol = self.config.get('protocol', 'http')
21
22
        verify = False
23
        if self.config.get('verify_certificate', None) == 'true' and protocol == 'https':
24
            verify = True
25
26
        if not subnet_id and not subnet and not name:
27
            raise ValueError('"subnet_id" or "subnet" or "name" value is required')
28
29
        response = requests.get("%s://%s%s" % (protocol, d42_server, "/api/1.0/suggest_ip/"), params={
30
            "subnet_id": subnet_id,
31
            "subnet": subnet,
32
            "name": name,
33
            "vrf_group_id": vrf_group_id,
34
            "vrf_group": vrf_group,
35
            "reserved_ip": reserved_ip,
36
        }, auth=(d42_username, d42_password), verify=verify)
37
38
        return response.json()["ip"]
39