zoukankan      html  css  js  c++  java
  • 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.

  • 相关阅读:
    hdu 2492 树状数组 Ping pong
    HDU 1532 基础EK Drainage Ditches
    EK算法模板
    Codeforces Round #538 (Div. 2) (A-E题解)
    Codeforces Global Round 1 (A-E题解)
    Educational Codeforces Round 59 (Rated for Div. 2) DE题解
    Codeforces Round #535 (Div. 3) 题解
    Codeforces Round #534 (Div. 2) D. Game with modulo(取余性质+二分)
    POJ2253:Frogger(改造Dijkstra)
    POJ1797:Heavy Transportation(改造Dijkstra)
  • 原文地址:https://www.cnblogs.com/YaoDD/p/6439395.html
Copyright © 2011-2022 走看看