mirror of
https://github.com/netbox-community/netbox.git
synced 2026-04-13 20:49:52 +02:00
Clone all GraphQL objects to V1 versions
This commit is contained in:
28
netbox/virtualization/graphql/filter_mixins_v1.py
Normal file
28
netbox/virtualization/graphql/filter_mixins_v1.py
Normal file
@@ -0,0 +1,28 @@
|
||||
from dataclasses import dataclass
|
||||
from typing import Annotated, TYPE_CHECKING
|
||||
|
||||
import strawberry
|
||||
import strawberry_django
|
||||
from strawberry import ID
|
||||
from strawberry_django import FilterLookup
|
||||
|
||||
from netbox.graphql.filter_mixins_v1 import NetBoxModelFilterMixinV1
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from .filters_v1 import VirtualMachineFilterV1
|
||||
|
||||
__all__ = (
|
||||
'VMComponentFilterMixinV1',
|
||||
)
|
||||
|
||||
|
||||
@dataclass
|
||||
class VMComponentFilterMixinV1(NetBoxModelFilterMixinV1):
|
||||
virtual_machine: Annotated[
|
||||
'VirtualMachineFilterV1', strawberry.lazy('virtualization.graphql.filters_v1')
|
||||
] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
virtual_machine_id: ID | None = strawberry_django.filter_field()
|
||||
name: FilterLookup[str] | None = strawberry_django.filter_field()
|
||||
description: FilterLookup[str] | None = strawberry_django.filter_field()
|
||||
170
netbox/virtualization/graphql/filters_v1.py
Normal file
170
netbox/virtualization/graphql/filters_v1.py
Normal file
@@ -0,0 +1,170 @@
|
||||
from typing import Annotated, TYPE_CHECKING
|
||||
|
||||
import strawberry
|
||||
import strawberry_django
|
||||
from strawberry.scalars import ID
|
||||
from strawberry_django import FilterLookup
|
||||
|
||||
from dcim.graphql.filter_mixins_v1 import InterfaceBaseFilterMixinV1, RenderConfigFilterMixinV1, ScopedFilterMixinV1
|
||||
from extras.graphql.filter_mixins_v1 import ConfigContextFilterMixinV1
|
||||
from netbox.graphql.filter_mixins_v1 import (
|
||||
ImageAttachmentFilterMixinV1,
|
||||
OrganizationalModelFilterMixinV1,
|
||||
PrimaryModelFilterMixinV1,
|
||||
)
|
||||
from tenancy.graphql.filter_mixins_v1 import ContactFilterMixinV1, TenancyFilterMixinV1
|
||||
from virtualization import models
|
||||
from virtualization.graphql.filter_mixins_v1 import VMComponentFilterMixinV1
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from .enums import *
|
||||
from netbox.graphql.filter_lookups import FloatLookup, IntegerLookup
|
||||
from dcim.graphql.filters_v1 import (
|
||||
DeviceFilterV1, DeviceRoleFilterV1, MACAddressFilterV1, PlatformFilterV1, SiteFilterV1
|
||||
)
|
||||
from ipam.graphql.filters_v1 import (
|
||||
FHRPGroupAssignmentFilterV1,
|
||||
IPAddressFilterV1,
|
||||
ServiceFilterV1,
|
||||
VLANGroupFilterV1,
|
||||
VRFFilterV1,
|
||||
)
|
||||
from vpn.graphql.filters_v1 import L2VPNFilterV1, TunnelTerminationFilterV1
|
||||
|
||||
__all__ = (
|
||||
'ClusterFilterV1',
|
||||
'ClusterGroupFilterV1',
|
||||
'ClusterTypeFilterV1',
|
||||
'VirtualMachineFilterV1',
|
||||
'VMInterfaceFilterV1',
|
||||
'VirtualDiskFilterV1',
|
||||
)
|
||||
|
||||
|
||||
@strawberry_django.filter_type(models.Cluster, lookups=True)
|
||||
class ClusterFilterV1(ContactFilterMixinV1, ScopedFilterMixinV1, TenancyFilterMixinV1, PrimaryModelFilterMixinV1):
|
||||
name: FilterLookup[str] | None = strawberry_django.filter_field()
|
||||
type: Annotated['ClusterTypeFilterV1', strawberry.lazy('virtualization.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
type_id: ID | None = strawberry_django.filter_field()
|
||||
group: Annotated['ClusterGroupFilterV1', strawberry.lazy('virtualization.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
group_id: ID | None = strawberry_django.filter_field()
|
||||
status: Annotated['ClusterStatusEnum', strawberry.lazy('virtualization.graphql.enums')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
vlan_groups: Annotated['VLANGroupFilterV1', strawberry.lazy('ipam.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
|
||||
|
||||
@strawberry_django.filter_type(models.ClusterGroup, lookups=True)
|
||||
class ClusterGroupFilterV1(ContactFilterMixinV1, OrganizationalModelFilterMixinV1):
|
||||
vlan_groups: Annotated['VLANGroupFilterV1', strawberry.lazy('ipam.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
|
||||
|
||||
@strawberry_django.filter_type(models.ClusterType, lookups=True)
|
||||
class ClusterTypeFilterV1(OrganizationalModelFilterMixinV1):
|
||||
pass
|
||||
|
||||
|
||||
@strawberry_django.filter_type(models.VirtualMachine, lookups=True)
|
||||
class VirtualMachineFilterV1(
|
||||
ContactFilterMixinV1,
|
||||
ImageAttachmentFilterMixinV1,
|
||||
RenderConfigFilterMixinV1,
|
||||
ConfigContextFilterMixinV1,
|
||||
TenancyFilterMixinV1,
|
||||
PrimaryModelFilterMixinV1,
|
||||
):
|
||||
name: FilterLookup[str] | None = strawberry_django.filter_field()
|
||||
site: Annotated['SiteFilterV1', strawberry.lazy('dcim.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
site_id: ID | None = strawberry_django.filter_field()
|
||||
cluster: Annotated['ClusterFilterV1', strawberry.lazy('virtualization.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
cluster_id: ID | None = strawberry_django.filter_field()
|
||||
device: Annotated['DeviceFilterV1', strawberry.lazy('dcim.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
device_id: ID | None = strawberry_django.filter_field()
|
||||
platform: Annotated['PlatformFilterV1', strawberry.lazy('dcim.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
platform_id: ID | None = strawberry_django.filter_field()
|
||||
status: Annotated['VirtualMachineStatusEnum', strawberry.lazy('virtualization.graphql.enums')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
role: Annotated['DeviceRoleFilterV1', strawberry.lazy('dcim.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
role_id: ID | None = strawberry_django.filter_field()
|
||||
primary_ip4: Annotated['IPAddressFilterV1', strawberry.lazy('ipam.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
primary_ip4_id: ID | None = strawberry_django.filter_field()
|
||||
primary_ip6: Annotated['IPAddressFilterV1', strawberry.lazy('ipam.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
primary_ip6_id: ID | None = strawberry_django.filter_field()
|
||||
vcpus: Annotated['FloatLookup', strawberry.lazy('netbox.graphql.filter_lookups')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
memory: Annotated['IntegerLookup', strawberry.lazy('netbox.graphql.filter_lookups')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
disk: Annotated['IntegerLookup', strawberry.lazy('netbox.graphql.filter_lookups')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
serial: FilterLookup[str] | None = strawberry_django.filter_field()
|
||||
interface_count: FilterLookup[int] | None = strawberry_django.filter_field()
|
||||
virtual_disk_count: FilterLookup[int] | None = strawberry_django.filter_field()
|
||||
interfaces: Annotated['VMInterfaceFilterV1', strawberry.lazy('virtualization.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
services: Annotated['ServiceFilterV1', strawberry.lazy('ipam.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
virtual_disks: Annotated['VirtualDiskFilterV1', strawberry.lazy('virtualization.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
|
||||
|
||||
@strawberry_django.filter_type(models.VMInterface, lookups=True)
|
||||
class VMInterfaceFilterV1(VMComponentFilterMixinV1, InterfaceBaseFilterMixinV1):
|
||||
ip_addresses: Annotated['IPAddressFilterV1', strawberry.lazy('ipam.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
vrf: Annotated['VRFFilterV1', strawberry.lazy('ipam.graphql.filters_v1')] | None = strawberry_django.filter_field()
|
||||
vrf_id: ID | None = strawberry_django.filter_field()
|
||||
parent: Annotated['VMInterfaceFilterV1', strawberry.lazy('virtualization.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
parent_id: ID | None = strawberry_django.filter_field()
|
||||
fhrp_group_assignments: Annotated[
|
||||
'FHRPGroupAssignmentFilterV1', strawberry.lazy('ipam.graphql.filters_v1')
|
||||
] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
tunnel_terminations: Annotated['TunnelTerminationFilterV1', strawberry.lazy('vpn.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
l2vpn_terminations: Annotated['L2VPNFilterV1', strawberry.lazy('vpn.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
mac_addresses: Annotated['MACAddressFilterV1', strawberry.lazy('dcim.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
|
||||
|
||||
@strawberry_django.filter_type(models.VirtualDisk, lookups=True)
|
||||
class VirtualDiskFilterV1(VMComponentFilterMixinV1):
|
||||
size: Annotated['IntegerLookup', strawberry.lazy('netbox.graphql.filter_lookups')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
27
netbox/virtualization/graphql/schema_v1.py
Normal file
27
netbox/virtualization/graphql/schema_v1.py
Normal file
@@ -0,0 +1,27 @@
|
||||
from typing import List
|
||||
|
||||
import strawberry
|
||||
import strawberry_django
|
||||
|
||||
from .types_v1 import *
|
||||
|
||||
|
||||
@strawberry.type(name="Query")
|
||||
class VirtualizationQueryV1:
|
||||
cluster: ClusterTypeV1 = strawberry_django.field()
|
||||
cluster_list: List[ClusterTypeV1] = strawberry_django.field()
|
||||
|
||||
cluster_group: ClusterGroupTypeV1 = strawberry_django.field()
|
||||
cluster_group_list: List[ClusterGroupTypeV1] = strawberry_django.field()
|
||||
|
||||
cluster_type: ClusterTypeTypeV1 = strawberry_django.field()
|
||||
cluster_type_list: List[ClusterTypeTypeV1] = strawberry_django.field()
|
||||
|
||||
virtual_machine: VirtualMachineTypeV1 = strawberry_django.field()
|
||||
virtual_machine_list: List[VirtualMachineTypeV1] = strawberry_django.field()
|
||||
|
||||
vm_interface: VMInterfaceTypeV1 = strawberry_django.field()
|
||||
vm_interface_list: List[VMInterfaceTypeV1] = strawberry_django.field()
|
||||
|
||||
virtual_disk: VirtualDiskTypeV1 = strawberry_django.field()
|
||||
virtual_disk_list: List[VirtualDiskTypeV1] = strawberry_django.field()
|
||||
146
netbox/virtualization/graphql/types_v1.py
Normal file
146
netbox/virtualization/graphql/types_v1.py
Normal file
@@ -0,0 +1,146 @@
|
||||
from typing import Annotated, List, TYPE_CHECKING, Union
|
||||
|
||||
import strawberry
|
||||
import strawberry_django
|
||||
|
||||
from extras.graphql.mixins_v1 import ConfigContextMixinV1, ContactsMixinV1
|
||||
from ipam.graphql.mixins_v1 import IPAddressesMixinV1, VLANGroupsMixinV1
|
||||
from netbox.graphql.scalars import BigInt
|
||||
from netbox.graphql.types_v1 import OrganizationalObjectTypeV1, NetBoxObjectTypeV1
|
||||
from virtualization import models
|
||||
from .filters_v1 import *
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from dcim.graphql.types_v1 import (
|
||||
DeviceRoleTypeV1,
|
||||
DeviceTypeV1,
|
||||
LocationTypeV1,
|
||||
MACAddressTypeV1,
|
||||
PlatformTypeV1,
|
||||
RegionTypeV1,
|
||||
SiteGroupTypeV1,
|
||||
SiteTypeV1,
|
||||
)
|
||||
from extras.graphql.types_v1 import ConfigTemplateTypeV1
|
||||
from ipam.graphql.types_v1 import IPAddressTypeV1, ServiceTypeV1, VLANTranslationPolicyTypeV1, VLANTypeV1, VRFTypeV1
|
||||
from tenancy.graphql.types_v1 import TenantTypeV1
|
||||
|
||||
__all__ = (
|
||||
'ClusterTypeV1',
|
||||
'ClusterGroupTypeV1',
|
||||
'ClusterTypeTypeV1',
|
||||
'VirtualDiskTypeV1',
|
||||
'VirtualMachineTypeV1',
|
||||
'VMInterfaceTypeV1',
|
||||
)
|
||||
|
||||
|
||||
@strawberry.type
|
||||
class ComponentTypeV1(NetBoxObjectTypeV1):
|
||||
"""
|
||||
Base type for device/VM components
|
||||
"""
|
||||
virtual_machine: Annotated["VirtualMachineTypeV1", strawberry.lazy('virtualization.graphql.types_v1')]
|
||||
|
||||
|
||||
@strawberry_django.type(
|
||||
models.Cluster,
|
||||
exclude=['scope_type', 'scope_id', '_location', '_region', '_site', '_site_group'],
|
||||
filters=ClusterFilterV1,
|
||||
pagination=True
|
||||
)
|
||||
class ClusterTypeV1(ContactsMixinV1, VLANGroupsMixinV1, NetBoxObjectTypeV1):
|
||||
type: Annotated["ClusterTypeTypeV1", strawberry.lazy('virtualization.graphql.types_v1')] | None
|
||||
group: Annotated["ClusterGroupTypeV1", strawberry.lazy('virtualization.graphql.types_v1')] | None
|
||||
tenant: Annotated["TenantTypeV1", strawberry.lazy('tenancy.graphql.types_v1')] | None
|
||||
virtual_machines: List[Annotated["VirtualMachineTypeV1", strawberry.lazy('virtualization.graphql.types_v1')]]
|
||||
devices: List[Annotated["DeviceTypeV1", strawberry.lazy('dcim.graphql.types_v1')]]
|
||||
|
||||
@strawberry_django.field
|
||||
def scope(self) -> Annotated[Union[
|
||||
Annotated["LocationTypeV1", strawberry.lazy('dcim.graphql.types_v1')],
|
||||
Annotated["RegionTypeV1", strawberry.lazy('dcim.graphql.types_v1')],
|
||||
Annotated["SiteGroupTypeV1", strawberry.lazy('dcim.graphql.types_v1')],
|
||||
Annotated["SiteTypeV1", strawberry.lazy('dcim.graphql.types_v1')],
|
||||
], strawberry.union("ClusterScopeTypeV1")] | None:
|
||||
return self.scope
|
||||
|
||||
|
||||
@strawberry_django.type(
|
||||
models.ClusterGroup,
|
||||
fields='__all__',
|
||||
filters=ClusterGroupFilterV1,
|
||||
pagination=True
|
||||
)
|
||||
class ClusterGroupTypeV1(ContactsMixinV1, VLANGroupsMixinV1, OrganizationalObjectTypeV1):
|
||||
|
||||
clusters: List[Annotated["ClusterTypeV1", strawberry.lazy('virtualization.graphql.types_v1')]]
|
||||
|
||||
|
||||
@strawberry_django.type(
|
||||
models.ClusterType,
|
||||
fields='__all__',
|
||||
filters=ClusterTypeFilterV1,
|
||||
pagination=True
|
||||
)
|
||||
class ClusterTypeTypeV1(OrganizationalObjectTypeV1):
|
||||
|
||||
clusters: List[ClusterTypeV1]
|
||||
|
||||
|
||||
@strawberry_django.type(
|
||||
models.VirtualMachine,
|
||||
fields='__all__',
|
||||
filters=VirtualMachineFilterV1,
|
||||
pagination=True
|
||||
)
|
||||
class VirtualMachineTypeV1(ConfigContextMixinV1, ContactsMixinV1, NetBoxObjectTypeV1):
|
||||
interface_count: BigInt
|
||||
virtual_disk_count: BigInt
|
||||
interface_count: BigInt
|
||||
config_template: Annotated["ConfigTemplateTypeV1", strawberry.lazy('extras.graphql.types_v1')] | None
|
||||
site: Annotated["SiteTypeV1", strawberry.lazy('dcim.graphql.types_v1')] | None
|
||||
cluster: Annotated["ClusterTypeV1", strawberry.lazy('virtualization.graphql.types_v1')] | None
|
||||
device: Annotated["DeviceTypeV1", strawberry.lazy('dcim.graphql.types_v1')] | None
|
||||
tenant: Annotated["TenantTypeV1", strawberry.lazy('tenancy.graphql.types_v1')] | None
|
||||
platform: Annotated["PlatformTypeV1", strawberry.lazy('dcim.graphql.types_v1')] | None
|
||||
role: Annotated["DeviceRoleTypeV1", strawberry.lazy('dcim.graphql.types_v1')] | None
|
||||
primary_ip4: Annotated["IPAddressTypeV1", strawberry.lazy('ipam.graphql.types_v1')] | None
|
||||
primary_ip6: Annotated["IPAddressTypeV1", strawberry.lazy('ipam.graphql.types_v1')] | None
|
||||
|
||||
interfaces: List[Annotated["VMInterfaceTypeV1", strawberry.lazy('virtualization.graphql.types_v1')]]
|
||||
services: List[Annotated["ServiceTypeV1", strawberry.lazy('ipam.graphql.types_v1')]]
|
||||
virtualdisks: List[Annotated["VirtualDiskTypeV1", strawberry.lazy('virtualization.graphql.types_v1')]]
|
||||
|
||||
|
||||
@strawberry_django.type(
|
||||
models.VMInterface,
|
||||
fields='__all__',
|
||||
filters=VMInterfaceFilterV1,
|
||||
pagination=True
|
||||
)
|
||||
class VMInterfaceTypeV1(IPAddressesMixinV1, ComponentTypeV1):
|
||||
_name: str
|
||||
mac_address: str | None
|
||||
parent: Annotated["VMInterfaceTypeV1", strawberry.lazy('virtualization.graphql.types_v1')] | None
|
||||
bridge: Annotated["VMInterfaceTypeV1", strawberry.lazy('virtualization.graphql.types_v1')] | None
|
||||
untagged_vlan: Annotated["VLANTypeV1", strawberry.lazy('ipam.graphql.types_v1')] | None
|
||||
vrf: Annotated["VRFTypeV1", strawberry.lazy('ipam.graphql.types_v1')] | None
|
||||
primary_mac_address: Annotated["MACAddressTypeV1", strawberry.lazy('dcim.graphql.types_v1')] | None
|
||||
qinq_svlan: Annotated["VLANTypeV1", strawberry.lazy('ipam.graphql.types_v1')] | None
|
||||
vlan_translation_policy: Annotated["VLANTranslationPolicyTypeV1", strawberry.lazy('ipam.graphql.types_v1')] | None
|
||||
|
||||
tagged_vlans: List[Annotated["VLANTypeV1", strawberry.lazy('ipam.graphql.types_v1')]]
|
||||
bridge_interfaces: List[Annotated["VMInterfaceTypeV1", strawberry.lazy('virtualization.graphql.types_v1')]]
|
||||
child_interfaces: List[Annotated["VMInterfaceTypeV1", strawberry.lazy('virtualization.graphql.types_v1')]]
|
||||
mac_addresses: List[Annotated["MACAddressTypeV1", strawberry.lazy('dcim.graphql.types_v1')]]
|
||||
|
||||
|
||||
@strawberry_django.type(
|
||||
models.VirtualDisk,
|
||||
fields='__all__',
|
||||
filters=VirtualDiskFilterV1,
|
||||
pagination=True
|
||||
)
|
||||
class VirtualDiskTypeV1(ComponentTypeV1):
|
||||
pass
|
||||
Reference in New Issue
Block a user