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 源码分析的更多相关文章

  1. Openstack Nova 源码分析 — 使用 VCDriver 创建 VMware Instance

    目录 目录 前言 流程图 nova-compute vCenter 前言 在上一篇Openstack Nova 源码分析 - Create instances (nova-conductor阶段)中, ...

  2. Openstack nova-scheduler 源码分析 — Filters/Weighting

    目录 目录 前言 调度器 FilterScheduler调度器的工作流程 Filters 过滤器 Filters 类型 Weighting 权重 源码实现 关键文件及其意义 阶段一nova-sched ...

  3. Openstack Nova 源码分析 — RPC 远程调用过程

    目录 目录 Nova Project Services Project 的程序入口 setuppy Nova中RPC远程过程调用 nova-compute RPC API的实现 novacompute ...

  4. Openstack Nova 源码分析 — Create instances (nova-conductor阶段)

    目录 目录 前言 Instance Flavor Instance Status Virt Driver Resource Tracker nova-conductor Create Instance ...

  5. 转:[gevent源码分析] 深度分析gevent运行流程

    [gevent源码分析] 深度分析gevent运行流程 http://blog.csdn.net/yueguanghaidao/article/details/24281751 一直对gevent运行 ...

  6. keystone源码分析(一)——Paste Deploy的应用

    本keystone源码分析系列基于Juno版Keystone,于2014年10月16日随Juno版OpenStack发布. Keystone作为OpenStack中的身份管理与授权模块,主要实现系统用 ...

  7. ceilometer 源码分析(polling)(O版)

    一.简单介绍ceilometer 这里长话短说, ceilometer是用来采集openstack下面各种资源的在某一时刻的资源值,比如云硬盘的大小等.下面是官网现在的架构图 这里除了ceilomet ...

  8. Docker源码分析(八):Docker Container网络(下)

    1.Docker Client配置容器网络模式 Docker目前支持4种网络模式,分别是bridge.host.container.none,Docker开发者可以根据自己的需求来确定最适合自己应用场 ...

  9. Docker源码分析(六):Docker Daemon网络

    1. 前言 Docker作为一个开源的轻量级虚拟化容器引擎技术,已然给云计算领域带来了新的发展模式.Docker借助容器技术彻底释放了轻量级虚拟化技术的威力,让容器的伸缩.应用的运行都变得前所未有的方 ...

随机推荐

  1. [转]RPC、CORBA、WebService之区别

    RPC是由Sun发明的远程过程调用协议,是第一种真正的分布式应用模型.Windows上使用的R PC是DCERPC的扩展.严格地说,RPC是一种逻辑上的协议,它可以使用Socket.Named Pip ...

  2. linux学习笔记8--命令touch

    linux的touch命令不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件. touch命令有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认 ...

  3. linux学习笔记7---命令cp

    cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一. cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录.它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的 ...

  4. jquery仿jquery mobile的select控件效果

    不说废话.直接上代码 //仿jQuery mobile Select控件 //使用方法box为容器id,_id指控件id,selectvalue为选中值,Value为当前值 function Sele ...

  5. lua语言介绍

    什么是Lua Lua是一个小巧的脚本语言. 是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Rober ...

  6. Java泛型小结

    本来想着写一篇总结Java泛型的文章,但是却发现了一篇不错的博文,引用自: http://www.cnblogs.com/lwbqqyumidi/p/3837629.html#undefined 现摘 ...

  7. easyui -grid每列绑定tooltip

    /**用法:*/function doCellTip() { $('#dg').datagrid('doCellTip', { 'max-width': '100px' });} /** * 扩展两个 ...

  8. 例举在诊断Oracle性能问题时,常用的工具、方法

    例举在诊断Oracle性能问题时,常用的工具.方法 解答: 1)简单一点的可以用toad及dbartisan这样的工具. 2)纯做性能监测,比较出色的有spolight和emc的I3,这两个软件都比较 ...

  9. 更改MVC注册Areas的顺序,掌控Areas的运作

    [转自:http://www.cnblogs.com/dozer/archive/2010/04/14/change-order-of-MVC-Areas.html] 一.前言 首先,有人要问,为什么 ...

  10. XML简单学习

    XML简单概述 1.Extensible Markup language可扩展标记语言; 2.作用:具有层次性的描述有关系的数据: 体现在:描述数据关系:软件配置,以描述程序模块之间的关系: 语法介绍 ...