Skip to content

Commit 9d091cc

Browse files
committed
Merge pull request #34 from fog/vpnaas
Integrate VPNaaS endpoints
2 parents 643f73c + 3441142 commit 9d091cc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+1639
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
require 'fog/openstack/models/collection'
2+
require 'fog/openstack/models/network/ike_policy'
3+
4+
module Fog
5+
module Network
6+
class OpenStack
7+
class IkePolicies < Fog::OpenStack::Collection
8+
attribute :filters
9+
10+
model Fog::Network::OpenStack::IkePolicy
11+
12+
def initialize(attributes)
13+
self.filters ||= {}
14+
super
15+
end
16+
17+
def all(filters_arg = filters)
18+
filters = filters_arg
19+
load_response(service.list_ike_policies(filters), 'ikepolicies')
20+
end
21+
22+
def get(ike_policy_id)
23+
if ike_policy = service.get_ike_policy(ike_policy_id).body['ikepolicy']
24+
new(ike_policy)
25+
end
26+
rescue Fog::Network::OpenStack::NotFound
27+
nil
28+
end
29+
end
30+
end
31+
end
32+
end
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
require 'fog/openstack/models/model'
2+
3+
module Fog
4+
module Network
5+
class OpenStack
6+
class IkePolicy < Fog::OpenStack::Model
7+
identity :id
8+
9+
attribute :name
10+
attribute :description
11+
attribute :status
12+
attribute :admin_state_up
13+
attribute :tenant_id
14+
attribute :auth_algorithm
15+
attribute :encryption_algorithm
16+
attribute :pfs
17+
attribute :phase1_negotiation_mode
18+
attribute :lifetime
19+
attribute :ike_version
20+
21+
def create
22+
requires :name, :auth_algorithm, :encryption_algorithm, :ike_version,
23+
:lifetime, :pfs, :phase1_negotiation_mode
24+
merge_attributes(service.create_ike_policy(attributes).body['ikepolicy'])
25+
self
26+
end
27+
28+
def update
29+
requires :id, :name, :auth_algorithm, :encryption_algorithm, :ike_version,
30+
:lifetime, :pfs, :phase1_negotiation_mode
31+
merge_attributes(service.update_ike_policy(id, attributes).body['ikepolicy'])
32+
self
33+
end
34+
35+
def destroy
36+
requires :id
37+
service.delete_ike_policy(id)
38+
true
39+
end
40+
end
41+
end
42+
end
43+
end
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
require 'fog/openstack/models/collection'
2+
require 'fog/openstack/models/network/ipsec_policy'
3+
4+
module Fog
5+
module Network
6+
class OpenStack
7+
class IpsecPolicies < Fog::OpenStack::Collection
8+
attribute :filters
9+
10+
model Fog::Network::OpenStack::IpsecPolicy
11+
12+
def initialize(attributes)
13+
self.filters ||= {}
14+
super
15+
end
16+
17+
def all(filters_arg = filters)
18+
filters = filters_arg
19+
load_response(service.list_ipsec_policies(filters), 'ipsecpolicies')
20+
end
21+
22+
def get(ipsec_policy_id)
23+
if ipsec_policy = service.get_ipsec_policy(ipsec_policy_id).body['ipsecpolicy']
24+
new(ipsec_policy)
25+
end
26+
rescue Fog::Network::OpenStack::NotFound
27+
nil
28+
end
29+
end
30+
end
31+
end
32+
end
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
require 'fog/openstack/models/model'
2+
3+
module Fog
4+
module Network
5+
class OpenStack
6+
class IpsecPolicy < Fog::OpenStack::Model
7+
identity :id
8+
9+
attribute :name
10+
attribute :description
11+
attribute :status
12+
attribute :admin_state_up
13+
attribute :tenant_id
14+
attribute :auth_algorithm
15+
attribute :encryption_algorithm
16+
attribute :pfs
17+
attribute :transform_protocol
18+
attribute :encapsulation_mode
19+
attribute :lifetime
20+
21+
def create
22+
requires :name, :auth_algorithm, :encryption_algorithm,
23+
:lifetime, :pfs, :transform_protocol,
24+
:encapsulation_mode
25+
merge_attributes(service.create_ipsec_policy(attributes).body['ipsecpolicy'])
26+
self
27+
end
28+
29+
def update
30+
requires :id, :name, :auth_algorithm, :encryption_algorithm,
31+
:lifetime, :pfs, :transform_protocol,
32+
:encapsulation_mode
33+
merge_attributes(service.update_ipsec_policy(id, attributes).body['ipsecpolicy'])
34+
self
35+
end
36+
37+
def destroy
38+
requires :id
39+
service.delete_ipsec_policy(id)
40+
true
41+
end
42+
end
43+
end
44+
end
45+
end
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
require 'fog/openstack/models/model'
2+
3+
module Fog
4+
module Network
5+
class OpenStack
6+
class IpsecSiteConnection < Fog::OpenStack::Model
7+
identity :id
8+
9+
attribute :name
10+
attribute :description
11+
attribute :status
12+
attribute :admin_state_up
13+
attribute :tenant_id
14+
attribute :vpnservice_id
15+
attribute :ikepolicy_id
16+
attribute :ipsecpolicy_id
17+
attribute :peer_address
18+
attribute :peer_id
19+
attribute :peer_cidrs
20+
attribute :psk
21+
attribute :mtu
22+
attribute :dpd
23+
attribute :initiator
24+
25+
def create
26+
requires :name, :vpnservice_id, :ikepolicy_id, :ipsecpolicy_id,
27+
:peer_address, :peer_id, :peer_cidrs, :psk
28+
merge_attributes(service.create_ipsec_site_connection(vpnservice_id,
29+
ikepolicy_id,
30+
ipsecpolicy_id,
31+
attributes).body['ipsec_site_connection'])
32+
self
33+
end
34+
35+
def update
36+
requires :id, :name, :vpnservice_id, :ikepolicy_id, :ipsecpolicy_id,
37+
:peer_address, :peer_id, :peer_cidrs, :psk
38+
merge_attributes(service.update_ipsec_site_connection(id,
39+
attributes).body['ipsec_site_connection'])
40+
self
41+
end
42+
43+
def destroy
44+
requires :id
45+
service.delete_ipsec_site_connection(id)
46+
true
47+
end
48+
end
49+
end
50+
end
51+
end
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
require 'fog/openstack/models/collection'
2+
require 'fog/openstack/models/network/ipsec_site_connection'
3+
4+
module Fog
5+
module Network
6+
class OpenStack
7+
class IpsecSiteConnections < Fog::OpenStack::Collection
8+
attribute :filters
9+
10+
model Fog::Network::OpenStack::IpsecSiteConnection
11+
12+
def initialize(attributes)
13+
self.filters ||= {}
14+
super
15+
end
16+
17+
def all(filters_arg = filters)
18+
filters = filters_arg
19+
load_response(service.list_ipsec_site_connections(filters), 'ipsec_site_connections')
20+
end
21+
22+
def get(ipsec_site_connection_id)
23+
connection = service.get_ipsec_site_connection(ipsec_site_connection_id).body['ipsec_site_connection']
24+
if connection
25+
new(connection)
26+
end
27+
rescue Fog::Network::OpenStack::NotFound
28+
nil
29+
end
30+
end
31+
end
32+
end
33+
end
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
require 'fog/openstack/models/model'
2+
3+
module Fog
4+
module Network
5+
class OpenStack
6+
class VpnService < Fog::OpenStack::Model
7+
identity :id
8+
9+
attribute :subnet_id
10+
attribute :router_id
11+
attribute :name
12+
attribute :description
13+
attribute :status
14+
attribute :admin_state_up
15+
attribute :tenant_id
16+
attribute :external_v4_ip
17+
attribute :external_v6_ip
18+
19+
def create
20+
requires :subnet_id, :router_id, :name, :admin_state_up
21+
merge_attributes(service.create_vpn_service(subnet_id,
22+
router_id,
23+
attributes).body['vpnservice'])
24+
self
25+
end
26+
27+
def update
28+
requires :id, :subnet_id, :router_id, :name, :admin_state_up
29+
merge_attributes(service.update_vpn_service(id,
30+
attributes).body['vpnservice'])
31+
self
32+
end
33+
34+
def destroy
35+
requires :id
36+
service.delete_vpn_service(id)
37+
true
38+
end
39+
end
40+
end
41+
end
42+
end
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
require 'fog/openstack/models/collection'
2+
require 'fog/openstack/models/network/vpn_service'
3+
4+
module Fog
5+
module Network
6+
class OpenStack
7+
class VpnServices < Fog::OpenStack::Collection
8+
attribute :filters
9+
10+
model Fog::Network::OpenStack::VpnService
11+
12+
def initialize(attributes)
13+
self.filters ||= {}
14+
super
15+
end
16+
17+
def all(filters_arg = filters)
18+
filters = filters_arg
19+
load_response(service.list_vpn_services(filters), 'vpnservices')
20+
end
21+
22+
def get(vpn_service_id)
23+
if vpn_service = service.get_vpn_service(vpn_service_id).body['vpnservice']
24+
new(vpn_service)
25+
end
26+
rescue Fog::Network::OpenStack::NotFound
27+
nil
28+
end
29+
end
30+
end
31+
end
32+
end

lib/fog/openstack/network.rb

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,14 @@ class OpenStack < Fog::Service
3838
collection :lb_health_monitors
3939
model :lb_vip
4040
collection :lb_vips
41+
model :vpn_service
42+
collection :vpn_services
43+
model :ike_policy
44+
collection :ike_policies
45+
model :ipsec_policy
46+
collection :ipsec_policies
47+
model :ipsec_site_connection
48+
collection :ipsec_site_connections
4149
model :security_group
4250
collection :security_groups
4351
model :security_group_rule
@@ -116,6 +124,34 @@ class OpenStack < Fog::Service
116124
request :get_lb_vip
117125
request :update_lb_vip
118126

127+
# VPNaaS VPN Service CRUD
128+
request :list_vpn_services
129+
request :create_vpn_service
130+
request :delete_vpn_service
131+
request :get_vpn_service
132+
request :update_vpn_service
133+
134+
# VPNaaS VPN IKE Policy CRUD
135+
request :list_ike_policies
136+
request :create_ike_policy
137+
request :delete_ike_policy
138+
request :get_ike_policy
139+
request :update_ike_policy
140+
141+
# VPNaaS VPN IPSec Policy CRUD
142+
request :list_ipsec_policies
143+
request :create_ipsec_policy
144+
request :delete_ipsec_policy
145+
request :get_ipsec_policy
146+
request :update_ipsec_policy
147+
148+
# VPNaaS VPN IPSec Site Connection CRUD
149+
request :list_ipsec_site_connections
150+
request :create_ipsec_site_connection
151+
request :delete_ipsec_site_connection
152+
request :get_ipsec_site_connection
153+
request :update_ipsec_site_connection
154+
119155
# Security Group
120156
request :create_security_group
121157
request :delete_security_group
@@ -180,6 +216,10 @@ def self.data
180216
:lb_members => {},
181217
:lb_health_monitors => {},
182218
:lb_vips => {},
219+
:vpn_services => {},
220+
:ike_policies => {},
221+
:ipsec_policies => {},
222+
:ipsec_site_connections => {},
183223
:quota => {
184224
"subnet" => 10,
185225
"router" => 10,

0 commit comments

Comments
 (0)