gophercloud openstack networking 源码分析
1、network 部分
// Package networks contains functionality for working with Neutron network resources.
// A network is an isolated virtual lay-2 broadcast domain that is typically reserved for
// the tenant who created it (unless you configure the network to be shared). Tenants
// can create multiple networks until the thresholds per-tenant quota is reached
//
// In the v2.0 Networking API, the network is the main entity. Ports and subnets are
// always associated with a networ
// networking/v2/networks/requests.go
// Create accepts a CreateOpts struct and creates a new network using the values
// provided. This operation does not actually require a request body , i.e. the
// CreateOpts struct argument can be empty.
//
// The tenant ID that is containd in the URI is the tenant that creates the network.
// An admin user, however, has the option of specifying another tenant ID in the
// CreateOpts struct.
1、func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder)
1、首先调用b, err := opts.ToNetworkCreateMap(),将CreateOpts结构转换为一个map
2、调用_, r.Err = c.Post(createURL(c), b, &r.Body, nil)
CreateOpts结构如下所示:
type CreateOpts struct {
AdminStateUp *bool
Name string
Shared *bool
TenantID string
}
2、router部分
// networking/v2/extensions/layer3/routers/requests.go
// Create accepts a CreateOpts struct and uses the values to create a new
// logical router. When it is created, the router does not have an inernal interface -
// it is not associated to any subnet.
//
// You can optionally specify an external gateway for a router using the
// GatewayInfo struct. The external gateway for the router must be plugged into
// an external network (it is external if its `router:external` field is set to true)
func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult)
// networking/v2/extensions/layer3/routers/requests.go
// AddInterface attaches a subnet to an internal router interface. You must specify
// either a SubnetID or PortID in the request body. If you specify both, the operation
// will fail and an error will be returned
//
// If you specify a SubnetID, the gateway IP address for that particular subnet is
// used to create the router interface. Alternatively, if you specify a PortID, the IP
// address associated with the port is used to create the router interface.
//
// If you reference a port that is associated with multiple IP addresses, or if the port
// is associated with zero IP addresses, the operation will fail and a 400 Bad Request
// error will be returned.
//
// If you reference a port already in use, the operation will fail and a 409 Conflict
// error will be returned.
//
// The PortID that is returned using Extract() on the result of this operation can
// either be the same PortID passed in or, on the other hand, the identifier of a new
// port created by this operation. After the operation completes, the device ID of the
// port is set to the router ID, and the device owner attribute is set to
// `network:router_interface`.
func AddInterface(c *gophercloud.ServiceClient, id string, opts AddInterfaceOptsBuilder) (r InterfaceResult)
3、subnet部分
// Package subnets containsj functionality for working with Neutron subnet resources
// A subnet represents an IP address block that can be used to assign IP addresses
// to virtual instances. Each subnet must have a CIDR and must be associated with a
// network. IPs can either be selected from the whole subnet CIDR or from allocation
// pools specified by the user.
//
// A subnet can also have a gateway, a list of DNS name servers, and host routes.
// This information is pushed to instances whose interfaces are associated with the
// subnet
// networking/v2/subnets/requests.go
// Create accepts a CreateOpts struct and creates a new subnet using the values
// provided. You must remember to provide a valid NetworkID, CIDR and IP Version.
func Create(c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult)
4、port部分
// Package ports contains functionality for working with Neutron port resources.
// A port represents a virtual switch port on a logical network switch. Virtual
// instances attach theri interfaces into ports. The logical port also defines the MAC
// address and the IP address(es) to be assigned to the interfaces plugged into them
// When IP addresses are associated to a port, this is also implies the port is
// associated with a subnet, as the IP address was taken from the allocation pool for
// a specific subnet.
gophercloud openstack networking 源码分析的更多相关文章
- Openstack Nova 源码分析 — 使用 VCDriver 创建 VMware Instance
目录 目录 前言 流程图 nova-compute vCenter 前言 在上一篇Openstack Nova 源码分析 - Create instances (nova-conductor阶段)中, ...
- Openstack nova-scheduler 源码分析 — Filters/Weighting
目录 目录 前言 调度器 FilterScheduler调度器的工作流程 Filters 过滤器 Filters 类型 Weighting 权重 源码实现 关键文件及其意义 阶段一nova-sched ...
- Openstack Nova 源码分析 — RPC 远程调用过程
目录 目录 Nova Project Services Project 的程序入口 setuppy Nova中RPC远程过程调用 nova-compute RPC API的实现 novacompute ...
- Openstack Nova 源码分析 — Create instances (nova-conductor阶段)
目录 目录 前言 Instance Flavor Instance Status Virt Driver Resource Tracker nova-conductor Create Instance ...
- 转:[gevent源码分析] 深度分析gevent运行流程
[gevent源码分析] 深度分析gevent运行流程 http://blog.csdn.net/yueguanghaidao/article/details/24281751 一直对gevent运行 ...
- keystone源码分析(一)——Paste Deploy的应用
本keystone源码分析系列基于Juno版Keystone,于2014年10月16日随Juno版OpenStack发布. Keystone作为OpenStack中的身份管理与授权模块,主要实现系统用 ...
- ceilometer 源码分析(polling)(O版)
一.简单介绍ceilometer 这里长话短说, ceilometer是用来采集openstack下面各种资源的在某一时刻的资源值,比如云硬盘的大小等.下面是官网现在的架构图 这里除了ceilomet ...
- Docker源码分析(八):Docker Container网络(下)
1.Docker Client配置容器网络模式 Docker目前支持4种网络模式,分别是bridge.host.container.none,Docker开发者可以根据自己的需求来确定最适合自己应用场 ...
- Docker源码分析(六):Docker Daemon网络
1. 前言 Docker作为一个开源的轻量级虚拟化容器引擎技术,已然给云计算领域带来了新的发展模式.Docker借助容器技术彻底释放了轻量级虚拟化技术的威力,让容器的伸缩.应用的运行都变得前所未有的方 ...
随机推荐
- Makefile 自动变量之 $(@D),$(@F)
参考:http://www.gnu.org/software/make/manual/make.html '$(@D)'The directory part of the file name of t ...
- [搬运]CORBA中BOA和POA的含义
先来BOA,搬自:http://www.cl.cam.ac.uk/research/dtg/attarchive/omniORB/doc/2.8/omniORB2/node6.html The Bas ...
- 对java中hashmap深入理解
1.HashMap的结构是怎样的? 二维结构,第一维是数组,第二维是链表 2.Get方法的流程是怎样的? 先调用Key的hashcode方法拿到对象的hash值,然后用hash值对第一维数组的长度进行 ...
- GridLayout 可使容器中的各个组件呈网格状布局
GridLayout 可使容器中的各个组件呈网格状布局,平局占据容器的空间,即使容器的大小发生变化,每个组件还是平均占据容器的空间. 和FlowLayout一样,GridLayout也是按照从上到下, ...
- 8127 timeout!!! 搞死人啊
ti 81xx 系列的 timeout搞死人啊 种类繁多 坑爹啊!! 今天终于找出了8127的一种以个timeout bug情况,妹的这个问题坑了我将近两个月,xxxx,这里我想说下情况,有些地方可能 ...
- 【vijos】1882 石阶上的砖(中位数+特殊的技巧)
https://vijos.org/p/1882 这种题很赞.. 以后记得这些绝对值最小的优先想中位数啊orz 首先我们将所有的高度都减掉他们的高度差,那么得到的应该是一串高低不平的数列,那么题目转化 ...
- 【BZOJ】3314: [Usaco2013 Nov]Crowded Cows(单调队列)
http://www.lydsy.com/JudgeOnline/problem.php?id=3314 一眼就是维护一个距离为d的单调递减队列... 第一次写.....看了下别人的代码... 这一题 ...
- 快速开发微信小程序
image.png 最近婷主在做微信小程序.自己的微信公众号也需要添加点料,乘着这次放假,把微信小程序研究了下.虽然没有做什么很强大的功能,不过好歹自己的公众号也有了微信小程序.够用即可. 1.需要先 ...
- iOS开发之 -- oc和swift下输出乘法口诀表
闲来无事,写着玩: oc: //乘法口诀表输出 ; i<=; i++) { ; j<=i; j++) { NSLog(@"%dx%d=%d\n",i,j,i*j); } ...
- LoadLibrary失敗,GetLastError 返回127錯誤
該原因一般是由於DLL或其依賴的DLL使用了高版本的API,而在低系統中運行時,找不到該函數所引發的錯誤. 比如:該函數:InterlockedExchange64, 看MSDN: Client Re ...