add_router_interface(router_id, subnet_id=nil, port_id=nil, options = {})
click to toggle source
def add_router_interface(router_id, subnet_id=nil, port_id=nil, options = {})
response = Excon::Response.new
if list_routers.body['routers'].find {|_| _['id'] == router_id}
if (subnet_id && port_id) || (subnet_id.nil? && port_id.nil?)
raise ArgumentError.new('Either a subnet or a port can be passed, not both')
end
if port_id.nil?
resp = create_port(self.data[:networks].keys[0], {:name => "New Port #{rand(10)}"})
port_id = resp.body['port']['id']
end
data = {
'subnet_id' => subnet_id || Fog::HP::Mock.uuid.to_s,
'port_id' => port_id
}
self.data[:ports][port_id]['device_id'] = router_id
self.data[:ports][port_id]['device_owner'] = 'network:router_interface'
response.status = 200
response.body = data
response
else
raise Fog::HP::Network::NotFound
end
end
associate_floating_ip(floating_ip_id, port_id, options = {})
click to toggle source
def associate_floating_ip(floating_ip_id, port_id, options = {})
response = Excon::Response.new
if list_floating_ips.body['floatingips'].find {|_| _['id'] == floating_ip_id}
response.status = 201
data = {
'id' => floating_ip_id,
'port_id' => port_id,
'router_id' => Fog::HP::Mock.uuid.to_s,
'tenant_id' => Fog::Mock.random_numbers(14).to_s,
'floating_network_id' => Fog::HP::Mock.uuid.to_s,
'fixed_ip_address' => options[:fixed_ip_address] || Fog::HP::Mock.ip_address.to_s,
'floating_ip_address' => Fog::HP::Mock.ip_address.to_s
}
self.data[:floating_ips][data['id']] = data
response.body = { 'floatingip' => data }
response
else
raise Fog::HP::Network::NotFound
end
end
create_floating_ip(floating_network_id, options = {})
click to toggle source
def create_floating_ip(floating_network_id, options = {})
response = Excon::Response.new
response.status = 201
data = {
'id' => Fog::HP::Mock.uuid.to_s,
'floating_network_id' => floating_network_id,
'port_id' => options[:port_id] || nil,
'tenant_id' => options[:tenant_id] || Fog::Mock.random_numbers(14).to_s,
'fixed_ip_address' => options[:fixed_ip_address] || nil,
'floating_ip_address' => options[:floating_ip_address] || Fog::HP::Mock.ip_address.to_s,
'router_id' => Fog::HP::Mock.uuid.to_s
}
self.data[:floating_ips][data['id']] = data
response.body = { 'floatingip' => data }
response
end
create_network(options = {})
click to toggle source
def create_network(options = {})
response = Excon::Response.new
response.status = 201
data = {
'id' => Fog::HP::Mock.uuid.to_s,
'name' => options[:name] || "",
'tenant_id' => options[:tenant_id] || Fog::Mock.random_numbers(14).to_s,
'status' => 'ACTIVE',
'subnets' => [],
'router:external' => false,
'admin_state_up' => options[:admin_state_up] || true,
'shared' => options[:shared] || false
}
self.data[:networks][data['id']] = data
response.body = { 'network' => data }
response
end
create_port(network_id, options = {})
click to toggle source
def create_port(network_id, options = {})
response = Excon::Response.new
if list_networks.body['networks'].find {|_| _['id'] == network_id}
response.status = 201
data = {
'id' => Fog::HP::Mock.uuid.to_s,
'name' => options[:name] || "",
'network_id' => network_id,
'fixed_ips' => options[:fixed_ips] || [{'subnet_id' => "#{Fog::HP::Mock.uuid.to_s}", 'ip_address' => "#{Fog::HP::Mock.ip_address.to_s}"}],
'mac_address' => options[:mac_address] || Fog::HP::Mock.mac_address.to_s,
'status' => 'ACTIVE',
'admin_state_up' => options[:admin_state_up] || true,
'binding:vif_type' => 'other',
'device_owner' => options[:device_owner] || "",
'device_id' => options[:device_id] || "",
'security_groups' => ["#{Fog::HP::Mock.uuid.to_s}"],
'tenant_id' => options[:tenant_id] || Fog::Mock.random_numbers(14).to_s
}
self.data[:ports][data['id']] = data
response.body = { 'port' => data }
response
else
raise Fog::HP::Network::NotFound
end
end
create_router(options = {})
click to toggle source
def create_router(options = {})
response = Excon::Response.new
response.status = 201
data = {
'id' => Fog::HP::Mock.uuid.to_s,
'name' => options[:name] || "",
'status' => 'ACTIVE',
'external_gateway_info' => options[:external_gateway_info] || nil,
'admin_state_up' => options[:admin_state_up] || true,
'tenant_id' => options[:tenant_id] || Fog::Mock.random_numbers(14).to_s
}
self.data[:routers][data['id']] = data
response.body = { 'router' => data }
response
end
create_security_group(options = {})
click to toggle source
def create_security_group(options = {})
tenant_id = Fog::Mock.random_numbers(14).to_s
sec_group_id = Fog::HP::Mock.uuid.to_s
response = Excon::Response.new
response.status = 201
data = {
'security_group_rules' => [
{ "remote_group_id" => nil,
"direction" => "egress",
"remote_ip_prefix" => nil,
"protocol" => nil,
"ethertype" => "IPv4",
"tenant_id" => tenant_id,
"port_range_max" => nil,
"port_range_min" => nil,
"id" => Fog::HP::Mock.uuid.to_s,
"security_group_id" => sec_group_id
},
{ "remote_group_id" => nil,
"direction" => "egress",
"remote_ip_prefix" => nil,
"protocol" => nil,
"ethertype" => "IPv6",
"tenant_id" => tenant_id,
"port_range_max" => nil,
"port_range_min" => nil,
"id" => Fog::HP::Mock.uuid.to_s,
"security_group_id" => sec_group_id
}
],
'id' => sec_group_id,
'tenant_id' => tenant_id,
'name' => options[:name] || "",
'description' => options[:description] || ""
}
self.data[:security_groups][data['id']] = data
response.body = { 'security_group' => data }
response
end
create_security_group_rule(security_group_id, direction, options = {})
click to toggle source
def create_security_group_rule(security_group_id, direction, options = {})
response = Excon::Response.new
data = {
"id" => Fog::HP::Mock.uuid.to_s,
"remote_group_id" => options[:remote_group_id],
"direction" => direction,
"remote_ip_prefix" => options[:remote_ip_prefix],
"protocol" => options[:protocol],
"ethertype" => options[:ethertype] || "IPv4",
"tenant_id" => options[:tenant_id] || Fog::Mock.random_numbers(14).to_s,
"port_range_max" => options[:port_range_max],
"port_range_min" => options[:port_range_min],
"security_group_id" => security_group_id
}
self.data[:security_group_rules][data['id']] = data
response.status = 201
response.body = { 'security_group_rule' => data }
response
end
create_subnet(network_id, cidr, ip_version, options = {})
click to toggle source
def create_subnet(network_id, cidr, ip_version, options = {})
if list_networks.body['networks'].find {|_| _['id'] == network_id}
response = Excon::Response.new
response.status = 201
data = {
'id' => Fog::HP::Mock.uuid.to_s,
'name' => options[:name] || "",
'network_id' => network_id,
'cidr' => cidr,
'ip_version' => ip_version,
'gateway_ip' => options[:gateway_ip] || Fog::HP::Mock.ip_address.to_s,
'allocation_pools' => options[:allocation_pools] || [{"start" => "#{Fog::HP::Mock.ip_address.to_s}", "end" => "#{Fog::HP::Mock.ip_address.to_s}"}],
'dns_nameservers' => options[:dns_nameservers] || [],
'host_routes' => options[:host_routes] || [],
'enable_dhcp' => options[:enable_dhcp] || true,
'tenant_id' => options[:tenant_id] || Fog::Mock.random_numbers(14).to_s
}
self.data[:subnets][data['id']] = data
self.data[:networks][network_id]['subnets'] << data['id']
response.body = { 'subnet' => data }
response
else
raise Fog::HP::Network::NotFound
end
end
data()
click to toggle source
def data
self.class.data[@hp_access_key]
end
delete_floating_ip(floating_ip_id)
click to toggle source
def delete_floating_ip(floating_ip_id)
response = Excon::Response.new
if list_floating_ips.body['floatingips'].find {|_| _['id'] == floating_ip_id}
self.data[:floating_ips].delete(floating_ip_id)
response.status = 204
response
else
raise Fog::HP::Network::NotFound
end
end
delete_network(network_id)
click to toggle source
def delete_network(network_id)
response = Excon::Response.new
if list_networks.body['networks'].find {|_| _['id'] == network_id}
self.data[:networks].delete(network_id)
response.status = 204
response
else
raise Fog::HP::Network::NotFound
end
end
delete_port(port_id)
click to toggle source
def delete_port(port_id)
response = Excon::Response.new
if list_ports.body['ports'].find {|_| _['id'] == port_id}
self.data[:ports].delete(port_id)
response.status = 204
response
else
raise Fog::HP::Network::NotFound
end
end
delete_router(router_id)
click to toggle source
def delete_router(router_id)
response = Excon::Response.new
if list_routers.body['routers'].find {|_| _['id'] == router_id}
self.data[:routers].delete(router_id)
response.status = 204
response
else
raise Fog::HP::Network::NotFound
end
end
delete_security_group(security_group_id)
click to toggle source
def delete_security_group(security_group_id)
response = Excon::Response.new
if self.data[:security_groups][security_group_id]
self.data[:security_groups].delete(security_group_id)
response.status = 204
response
else
raise Fog::HP::Network::NotFound
end
end
delete_security_group_rule(security_group_rule_id)
click to toggle source
def delete_security_group_rule(security_group_rule_id)
response = Excon::Response.new
if self.data[:security_group_rules][security_group_rule_id]
self.data[:security_group_rules].delete(security_group_rule_id)
response.status = 204
response
else
raise Fog::HP::Network::NotFound
end
end
delete_subnet(subnet_id)
click to toggle source
def delete_subnet(subnet_id)
response = Excon::Response.new
if list_subnets.body['subnets'].find {|_| _['id'] == subnet_id}
self.data[:subnets].delete(subnet_id)
response.status = 204
response
else
raise Fog::HP::Network::NotFound
end
end
disassociate_floating_ip(floating_ip_id, options = {})
click to toggle source
def disassociate_floating_ip(floating_ip_id, options = {})
response = Excon::Response.new
if list_floating_ips.body['floatingips'].find {|_| _['id'] == floating_ip_id}
response.status = 200
data = {
'id' => floating_ip_id,
'port_id' => nil,
'router_id' => Fog::HP::Mock.uuid.to_s,
'tenant_id' => Fog::Mock.random_numbers(14).to_s,
'floating_network_id' => Fog::HP::Mock.uuid.to_s,
'fixed_ip_address' => nil,
'floating_ip_address' => Fog::HP::Mock.ip_address.to_s
}
self.data[:floating_ips][data['id']] = data
response.body = { 'floatingip' => data }
response
else
raise Fog::HP::Network::NotFound
end
end
get_floating_ip(floating_ip_id)
click to toggle source
def get_floating_ip(floating_ip_id)
response = Excon::Response.new
if floating_ip = list_floating_ips.body['floatingips'].find {|_| _['id'] == floating_ip_id}
response.status = 200
response.body = { 'floatingip' => floating_ip }
response
else
raise Fog::HP::Network::NotFound
end
end
get_network(network_id)
click to toggle source
def get_network(network_id)
response = Excon::Response.new
if network = list_networks.body['networks'].find {|_| _['id'] == network_id}
response.status = 200
response.body = { 'network' => network }
response
else
raise Fog::HP::Network::NotFound
end
end
get_port(port_id)
click to toggle source
def get_port(port_id)
response = Excon::Response.new
if port = list_ports.body['ports'].find {|_| _['id'] == port_id}
response.status = 200
response.body = { 'port' => port }
response
else
raise Fog::HP::Network::NotFound
end
end
get_router(router_id)
click to toggle source
def get_router(router_id)
response = Excon::Response.new
if router = list_routers.body['routers'].find {|_| _['id'] == router_id}
response.status = 200
response.body = { 'router' => router }
response
else
raise Fog::HP::Network::NotFound
end
end
get_security_group(security_group_id)
click to toggle source
def get_security_group(security_group_id)
response = Excon::Response.new
if sec_group = self.data[:security_groups][security_group_id]
response.status = 200
response.body = { 'security_group' => sec_group }
response
else
raise Fog::HP::Network::NotFound
end
end
get_security_group_rule(security_group_rule_id)
click to toggle source
def get_security_group_rule(security_group_rule_id)
response = Excon::Response.new
if sec_group_rule = self.data[:security_group_rules][security_group_rule_id]
response.status = 200
response.body = { 'security_group_rule' => sec_group_rule }
response
else
raise Fog::HP::Network::NotFound
end
end
get_subnet(subnet_id)
click to toggle source
def get_subnet(subnet_id)
response = Excon::Response.new
if subnet = list_subnets.body['subnets'].find {|_| _['id'] == subnet_id}
response.status = 200
response.body = { 'subnet' => subnet }
response
else
raise Fog::HP::Network::NotFound
end
end
list_floating_ips(options = {})
click to toggle source
def list_floating_ips(options = {})
response = Excon::Response.new
floatingips = self.data[:floating_ips].values
response.status = 200
response.body = { 'floatingips' => floatingips }
response
end
list_networks(options = {})
click to toggle source
def list_networks(options = {})
response = Excon::Response.new
networks = self.data[:networks].values
response.status = 200
response.body = { 'networks' => networks }
response
end
list_ports(options = {})
click to toggle source
def list_ports(options = {})
response = Excon::Response.new
ports = self.data[:ports].values
response.status = 200
response.body = { 'ports' => ports }
response
end
list_routers(options = {})
click to toggle source
def list_routers(options = {})
response = Excon::Response.new
routers = self.data[:routers].values
response.status = 200
response.body = { 'routers' => routers }
response
end
list_security_group_rules(options = {})
click to toggle source
def list_security_group_rules(options = {})
response = Excon::Response.new
sec_group_rules = []
sec_group_rules = self.data[:security_group_rules].values unless self.data[:security_group_rules].nil?
response.status = 200
response.body = { 'security_group_rules' => sec_group_rules }
response
end
list_security_groups(options = {})
click to toggle source
def list_security_groups(options = {})
response = Excon::Response.new
sec_groups = []
sec_groups = self.data[:security_groups].values unless self.data[:security_groups].nil?
response.status = 200
response.body = { 'security_groups' => sec_groups }
response
end
list_subnets(options = {})
click to toggle source
def list_subnets(options = {})
response = Excon::Response.new
subnets = self.data[:subnets].values
response.status = 200
response.body = { 'subnets' => subnets }
response
end
remove_router_interface(router_id, subnet_id=nil, port_id=nil, options = {})
click to toggle source
def remove_router_interface(router_id, subnet_id=nil, port_id=nil, options = {})
response = Excon::Response.new
if list_routers.body['routers'].find {|_| _['id'] == router_id}
if (subnet_id && port_id) || (subnet_id.nil? && port_id.nil?)
raise ArgumentError.new('Either a subnet or a port can be passed, not both')
end
if port_id
delete_port(port_id)
elsif subnet_id
ports = self.data[:ports].select {|p| self.data[:ports]["#{p}"]['device_id'] == router_id }
ports.each do |key, _|
delete_port(key)
end
end
response.status = 200
response
else
raise Fog::HP::Network::NotFound
end
end
reset_data()
click to toggle source
def reset_data
self.class.data.delete(@hp_access_key)
end
update_network(network_id, options = {})
click to toggle source
def update_network(network_id, options = {})
response = Excon::Response.new
if network = list_networks.body['networks'].find {|_| _['id'] == network_id}
network['name'] = options[:name]
network['shared'] = options[:shared]
network['admin_state_up'] = options[:admin_state_up]
response.body = { 'network' => network }
response.status = 200
response
else
raise Fog::HP::Network::NotFound
end
end
update_port(port_id, options = {})
click to toggle source
def update_port(port_id, options = {})
response = Excon::Response.new
if port = list_ports.body['ports'].find { |_| _['id'] == port_id }
port['name'] = options[:name]
port['fixed_ips'] = options[:fixed_ips]
port['device_owner'] = options[:device_owner]
port['device_id'] = options[:device_id]
port['admin_state_up'] = options[:admin_state_up]
response.body = { 'port' => port }
response.status = 200
response
else
raise Fog::HP::Network::NotFound
end
end
update_router(router_id, options = {})
click to toggle source
def update_router(router_id, options = {})
response = Excon::Response.new
if router = list_routers.body['routers'].find {|_| _['id'] == router_id}
router['name'] = options[:name]
router['admin_state_up'] = options[:admin_state_up]
router['external_gateway_info'] = options[:external_gateway_info]
response.body = { 'router' => router }
response.status = 200
response
else
raise Fog::HP::Network::NotFound
end
end
update_subnet(subnet_id, options = {})
click to toggle source
def update_subnet(subnet_id, options = {})
response = Excon::Response.new
if subnet = list_subnets.body['subnets'].find {|_| _['id'] == subnet_id}
subnet['name'] = options[:name]
subnet['gateway_ip'] = options[:gateway_ip]
subnet['dns_nameservers'] = options[:dns_nameservers]
subnet['host_routes'] = options[:host_routes]
subnet['enable_dhcp'] = options[:enable_dhcp]
response.body = { 'subnet' => subnet }
response.status = 200
response
else
raise Fog::HP::Network::NotFound
end
end