File: network.py

package info (click to toggle)
python-openstacksdk 4.4.0-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 13,352 kB
  • sloc: python: 122,960; sh: 153; makefile: 23
file content (135 lines) | stat: -rw-r--r-- 5,607 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.

from openstack.network.v2 import _base
from openstack import resource


class Network(_base.NetworkResource, _base.TagMixinNetwork):
    resource_key = 'network'
    resources_key = 'networks'
    base_path = '/networks'

    # capabilities
    allow_create = True
    allow_fetch = True
    allow_commit = True
    allow_delete = True
    allow_list = True

    # NOTE: We don't support query on list or datetime fields yet
    _query_mapping = resource.QueryParameters(
        'description',
        'name',
        'status',
        'project_id',
        'sort_key',
        'sort_dir',
        ipv4_address_scope_id='ipv4_address_scope',
        ipv6_address_scope_id='ipv6_address_scope',
        is_admin_state_up='admin_state_up',
        is_port_security_enabled='port_security_enabled',
        is_router_external='router:external',
        is_shared='shared',
        provider_network_type='provider:network_type',
        provider_physical_network='provider:physical_network',
        provider_segmentation_id='provider:segmentation_id',
        **_base.TagMixinNetwork._tag_query_parameters,
    )

    # Properties
    #: Availability zone hints to use when scheduling the network.
    #: *Type: list of availability zone names*
    availability_zone_hints = resource.Body('availability_zone_hints')
    #: Availability zones for the network.
    #: *Type: list of availability zone names*
    availability_zones = resource.Body('availability_zones')
    #: Timestamp when the network was created.
    created_at = resource.Body('created_at')
    #: The network description.
    description = resource.Body('description')
    #: The DNS domain associated.
    dns_domain = resource.Body('dns_domain')
    #: The ID of the IPv4 address scope for the network.
    ipv4_address_scope_id = resource.Body('ipv4_address_scope')
    #: The ID of the IPv6 address scope for the network.
    ipv6_address_scope_id = resource.Body('ipv6_address_scope')
    #: The administrative state of the network, which is up ``True`` or
    #: down ``False``. *Type: bool*
    is_admin_state_up = resource.Body('admin_state_up', type=bool)
    #: Whether or not this is the default external network.
    #: *Type: bool*
    is_default = resource.Body('is_default', type=bool)
    #: The port security status, which is enabled ``True`` or disabled
    #: ``False``. *Type: bool* *Default: False*
    #: Available for multiple provider extensions.
    is_port_security_enabled = resource.Body(
        'port_security_enabled', type=bool, default=False
    )
    #: Whether or not the router is external.
    #: *Type: bool* *Default: False*
    is_router_external = resource.Body(
        'router:external', type=bool, default=False
    )
    #: Indicates whether this network is shared across all tenants.
    #: By default, only administrative users can change this value.
    #: *Type: bool*
    is_shared = resource.Body('shared', type=bool)
    #: Read-only. The maximum transmission unit (MTU) of the network resource.
    mtu = resource.Body('mtu', type=int)
    #: The network name.
    name = resource.Body('name')
    #: The ID of the project this network is associated with.
    project_id = resource.Body('project_id')
    #: The type of physical network that maps to this network resource.
    #: For example, ``flat``, ``vlan``, ``vxlan``, or ``gre``.
    #: Available for multiple provider extensions.
    provider_network_type = resource.Body('provider:network_type')
    #: The physical network where this network object is implemented.
    #: Available for multiple provider extensions.
    provider_physical_network = resource.Body('provider:physical_network')
    #: An isolated segment ID on the physical network. The provider
    #: network type defines the segmentation model.
    #: Available for multiple provider extensions.
    provider_segmentation_id = resource.Body('provider:segmentation_id')
    #: The ID of the QoS policy attached to the port.
    qos_policy_id = resource.Body('qos_policy_id')
    #: A list of provider segment objects.
    #: Available for multiple provider extensions.
    segments = resource.Body('segments')
    #: The network status.
    status = resource.Body('status')
    #: The associated subnet IDs.
    #: *Type: list of strs of the subnet IDs*
    subnet_ids = resource.Body('subnets', type=list)
    #: Timestamp when the network was last updated.
    updated_at = resource.Body('updated_at')
    #: Indicates the VLAN transparency mode of the network
    is_vlan_transparent = resource.Body('vlan_transparent', type=bool)
    #: Indicates the VLAN QinQ mode of the network
    is_vlan_qinq = resource.Body('vlan_qinq', type=bool)


class DHCPAgentHostingNetwork(Network):
    resource_key = 'network'
    resources_key = 'networks'
    base_path = '/agents/%(agent_id)s/dhcp-networks'
    resource_name = 'dhcp-network'

    # capabilities
    allow_create = False
    allow_fetch = True
    allow_commit = False
    allow_delete = False
    allow_list = True

    # NOTE: No query parameter is supported