smart_proxy_ipam 0.0.10 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f3812263cf984e604cf0b7272bf9519cf503ea883b46a353a6f1edbcaefe7eab
4
- data.tar.gz: 11a128c3d83dc3f6c2b4c9157846076a351c4dc0ab82c4c7b332ddcb1a23349f
3
+ metadata.gz: 42b9945498eacd5e884248edc7770ac14fbda2b7315fd8f6997aa2fda7738323
4
+ data.tar.gz: 737a679b29622a526211670cbff2cf5e2a6e0b386f3ace537ce4ebc0a12b7e5b
5
5
  SHA512:
6
- metadata.gz: 517e692d368b9febe9d8c34eba7b9e9e7e919714cf7d560d6df4483f28e0e8bb3f8ef485030cd68f08458a7c87dacb358e8a4aac1bd4882b95df0c696415587e
7
- data.tar.gz: 5bb0c0a9bf0ce71d58d2fc234429568882d210436b21589acbc74d96a4bddcca6b6ccb4f4ae371f805368db9fa71bda6bc21c946a2ed00b52090ce7f2e5a7179
6
+ metadata.gz: '09f728a68de1da60906199cba9dada6d120ea31657f2369ba616b92c9a10dec3d3feba4e15051266af03e13e8d4be2d231841f17094b674d50fa5e2f630e0dfb'
7
+ data.tar.gz: bb3c04b61e6776dabda6c2e752b7376013045b247560887481bde4701bb4d2fbbaee8bc973e49b393b695ee16f72d17c8e297219b545609e8b07ea970c847bb4
data/README.md CHANGED
@@ -15,10 +15,10 @@ for how to install Foreman plugins
15
15
 
16
16
  ## Usage
17
17
 
18
- Once plugin is installed, you can look at the phpIPAM Dashboard(at Infrastructure --> phpIPAM Dashboard), for a simple view of sections, subnets etc. and/or use phpIPAM to get the next available IP address for a subnet:
18
+ Once plugin is installed, you can use phpIPAM to get the next available IP address for a subnet:
19
19
 
20
- 1. Create a subnet in Foreman of IPAM type "phpIPAM". Click on the `Proxy` tab and associate the subnet with the phpIPAM proxy. _NOTE: This subnet must actually exist in phpIPAM. There is no phpIPAM integration on the subnet creation at this time._
21
- 2. Create a host in Foreman. When adding/editing interfaces, select the above subnet, and the next available IP(pulled from phpIPAM) for the selected subnet will be displayed in the IPv4 address field. _NOTE: This is not supported for IPv6._
20
+ 1. Create a subnet in Foreman of IPAM type "External IPAM". Click on the `Proxy` tab and associate the subnet with the External IPAM proxy. _NOTE: This subnet must actually exist in phpIPAM. There is no phpIPAM integration on the subnet creation at this time._
21
+ 2. Create a host in Foreman. When adding/editing interfaces, select the above created subnet, and the next available IP(pulled from phpIPAM) for the selected subnet will be displayed in the IPv4 address field. _NOTE: This is not supported for IPv6._
22
22
 
23
23
  ## Local development
24
24
 
@@ -62,8 +62,8 @@ bundle exec smart-proxy start
62
62
  ```
63
63
  9. Navigate to Foreman UI at http://localhost:5000
64
64
  10. Add a Local Smart Proxy in the Foreman UI(Infrastructure => Smart Proxies)
65
- 11. Ensure that the `phpipam` feature is present on the proxy(http://proxy_url/features)
66
- 12. Create a Subnet, and associate the subnet to the `phpipam` proxy
65
+ 11. Ensure that the `external_ipam` feature is present on the proxy(http://proxy_url/features)
66
+ 12. Create a Subnet, and associate the subnet to the `external_ipam` proxy
67
67
 
68
68
  ## Contributing
69
69
 
@@ -13,14 +13,15 @@ module Proxy::Phpipam
13
13
  MAX_RETRIES = 5
14
14
  DEFAULT_CLEANUP_INTERVAL = 120 # 2 mins
15
15
  @@ip_cache = nil
16
+ @@timer_task = nil
16
17
 
17
18
  def initialize
18
19
  @conf = Proxy::Ipam.get_config[:phpipam]
19
20
  @api_base = "#{@conf[:url]}/api/#{@conf[:user]}/"
20
21
  @token = nil
21
- @m = Monitor.new
22
+ @@m = Monitor.new
22
23
  init_cache if @@ip_cache.nil?
23
- start_cleanup_task
24
+ start_cleanup_task if @@timer_task.nil?
24
25
  end
25
26
 
26
27
  def get_subnet(cidr)
@@ -157,8 +158,8 @@ module Proxy::Phpipam
157
158
 
158
159
  def start_cleanup_task
159
160
  logger.info("Starting allocated ip address maintenance (used by get_next_ip call).")
160
- @timer_task = Concurrent::TimerTask.new(:execution_interval => DEFAULT_CLEANUP_INTERVAL) { init_cache }
161
- @timer_task.execute
161
+ @@timer_task = Concurrent::TimerTask.new(:execution_interval => DEFAULT_CLEANUP_INTERVAL) { init_cache }
162
+ @@timer_task.execute
162
163
  end
163
164
 
164
165
  private
@@ -176,14 +177,14 @@ module Proxy::Phpipam
176
177
  # }
177
178
  def init_cache
178
179
  logger.debug("Clearing ip cache.")
179
- @m.synchronize do
180
+ @@m.synchronize do
180
181
  @@ip_cache = {}
181
182
  end
182
183
  end
183
184
 
184
185
  def add_ip_to_cache(ip, mac, cidr)
185
186
  logger.debug("Adding IP #{ip} to cache for subnet #{cidr}")
186
- @m.synchronize do
187
+ @@m.synchronize do
187
188
  if @@ip_cache.key?(cidr.to_sym)
188
189
  @@ip_cache[cidr.to_sym][mac.to_sym] = ip.to_s
189
190
  else
@@ -193,7 +194,7 @@ module Proxy::Phpipam
193
194
  end
194
195
 
195
196
  # Called when next available IP from external IPAM has been cached by another user/host, but
196
- # not actually persisted in external IPAM. Try to increment the IP(MAX_RETRIES times), and
197
+ # not actually persisted in external IPAM. Will increment the IP(MAX_RETRIES times), and
197
198
  # see if it is available in external IPAM.
198
199
  def find_new_ip(subnet_id, ip, mac, cidr)
199
200
  found_ip = nil
@@ -1,6 +1,6 @@
1
1
 
2
2
  module Proxy
3
3
  module Ipam
4
- VERSION = '0.0.10'
4
+ VERSION = '0.0.11'
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smart_proxy_ipam
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christopher Smith
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-22 00:00:00.000000000 Z
11
+ date: 2019-09-03 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Smart proxy plugin for IPAM integration with various IPAM providers
14
14
  email: chrisjsmith001@gmail.com