syntax = "v1"

info(
    title: "VM core"
    desc: "VM core微服务"
    author: "wanqgi"
    email: "1364512070@qq.com"
)

type (
    Rate {
    }
    Absolute {
        MaxServerMeta int64 `json:"max_server_meta,optional"`
        MaxPersonality int64 `json:"max_personality,optional"`
        TotalServerGroupsUsed int64 `json:"total_server_groups_used,optional"`
        MaxImageMeta int64 `json:"max_image_meta,optional"`
        MaxPersonalitySize int64 `json:"max_personality_size,optional"`
        MaxTotalKeypairs int64 `json:"max_total_keypairs,optional"`
        MaxSecurityGroupRules int64 `json:"max_security_group_rules,optional"`
        MaxServerGroups int64 `json:"max_server_groups,optional"`
        TotalCoresUsed int64 `json:"total_cores_used,optional"`
        TotalRAMUsed int64 `json:"total_ram_used,optional"`
        TotalInstancesUsed int64 `json:"total_instances_used,optional"`
        MaxSecurityGroups int64 `json:"max_security_groups,optional"`
        TotalFloatingIpsUsed int64 `json:"total_floating_ips_used,optional"`
        MaxTotalCores int64 `json:"max_total_cores,optional"`
        MaxServerGroupMembers int64 `json:"max_server_group_members,optional"`
        MaxTotalFloatingIps int64 `json:"max_total_floating_ips,optional"`
        TotalSecurityGroupsUsed int64 `json:"total_security_groups_used,optional"`
        MaxTotalInstances int64 `json:"max_total_instances,optional"`
        MaxTotalRAMSize int64 `json:"max_total_ram_size,optional"`
    }
    Limits {
        rate Rate `json:"rate,optional"`
        absolute Absolute `json:"absolute,optional"`
    }
    GetComputeLimitsReq {
        Platform string `form:"platform,optional"`
    }

    GetComputeLimitsResp {
        limits Limits `json:"limits,optional"`
        Code int32 `json:"code,omitempty"`
        Msg string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
    }
)
type (
    VolumeRate {
    }
    VolumeAbsolute {
        TotalSnapshotsUsed int32 `json:"total_snapshots_used,optional"`
        MaxTotalBackups int32 `json:"max_total_backups,optional"`
        MaxTotalVolumeGigabytes int32 `json:"max_total_volume_gigabytes,optional"`
        MaxTotalSnapshots int32 `json:"max_total_snapshots,optional"`
        MaxTotalBackupGigabytes int32 `json:"max_total_backup_gigabytes,optional"`
        TotalBackupGigabytesUsed int32 `json:"total_backup_gigabytes_used,optional"`
        MaxTotalVolumes int32 `json:"max_total_volumes,optional"`
        TotalVolumesUsed int32 `json:"total_volumes_used,optional"`
        TotalBackupsUsed int32 `json:"total_backups_used,optional"`
        TotalGigabytesUsed int32 `json:"total_gigabytes_used,optional"`
    }
    VolumeLimits {
        rate VolumeRate `json:"rate,optional"`
        absolute VolumeAbsolute `json:"absolute,optional"`
    }
    GetVolumeLimitsReq {
        Platform string `form:"platform,optional"`
    }

    GetVolumeLimitsResp {
        limits VolumeLimits `json:"limits,optional"`
        Code int32 `json:"code,omitempty"`
        Msg string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
    }

    OpenstackOverviewReq {
        Platform string `form:"platform,optional"`
    }
    OpenstackOverviewResp {
        Data OpenstackOverview `json:"data"`
        Code int32 `json:"code,omitempty"`
        Msg string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
    }
    OpenstackOverview {
        max_total_cores int32 `json:"max_total_cores"`
        max_total_ram_size int32 `json:"max_total_ram_size"`
        max_total_volumes int32 `json:"max_total_volumes"`
    }

)
/****************** servers start*************************/
type (
    ListServersReq {
        Limit int32 `form:"limit,optional"`
        OffSet int32 `form:"offSet,optional"`
        Platform string `form:"platform,optional"`
    }
    ListServersResp {
        TotalNumber uint32 `json:"totalNumber" copier:"TotalNumber"`
        Servers []Servers `json:"servers" copier:"Servers"`
        servers_links []Servers_links `json:"serversLinks" copier:"Servers_links"`
        Code int32 `json:"code,omitempty"`
        Msg string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
    }

    Servers {
        Id string `json:"id" copier:"Id"`
        Name string `json:"name" copier:"Name"`
        Links []Links `json:"links " copier:"Links "`
    }

    Links {
        Href string `json:"href " copier:"Href"`
        Rel string `json:"rel" copier:"Rel"`
    }

    Servers_links {
        Href string `json:"href " copier:"Href"`
        Rel string `json:"rel" copier:"Rel"`
    }
)

type (
    ListServersDetailedReq {
        Platform string `form:"platform,optional"`
    }
    ListServersDetailedResp {
        ServersDetailed []ServersDetailed `json:"servers" copier:"ServersDetailed"`
        Code int32 `json:"code,omitempty"`
        Msg string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
    }

    ServersDetailed {
        Id string `json:"id" copier:"Id"`
        Name string `json:"name" copier:"Name"`
        OSTaskState uint32 `json:"os_task_state" copier:"OSTaskState"`
        Status string `json:"status" copier:"Status"`
        VmState string `json:"vm_state" copier:"VmState"`
        OS_EXT_SRV_ATTR_Instance_Name string `json:"os_ext_srv_attr_instance_name" copier:"OS_EXT_SRV_ATTR_Instance_Name"`
        Created string `json:"created" copier:"Created"`
        HostId string `json:"hostId" copier:"HostId"`
        Ip string `json:"ip" copier:"Ip"`
        Image string `json:"image" copier:"Image"`
        Updated string `json:"updated" copier:"Updated"`
        Flavor string `json:"flavor" copier:"Flavor"`
        Key_name string `json:"key_name" copier:"Key_name"`
        Survival_time int32 `json:"survival_time" copier:"Survival_time"`
    }
)

type(
    GetServersDetailedByIdReq{
        ServerId string `form:"server_id" copier:"ServerId"`
        Platform string `form:"platform,optional"`
    }

    GetServersDetailedByIdResp{
        Servers ServersDetaileResp `json:"server" copier:"Servers"`
        Code int32 `json:"code,omitempty"`
        Msg string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
    }
    ServersDetaileResp {
        AccessIPv4 string `json:"accessIPv4" copier:"AccessIPv4"`
        AccessIPv6 string `json:"accessIPv6" copier:"AccessIPv6"`
        Addresses  Addresses `json:"addresses" copier:"Addresses"`
        Name string `json:"name" copier:"Name"`
        ConfigDrive string `json:"config_drive" copier:"ConfigDrive"`
        Created string `json:"created" copier:"Created"`
        Flavor  FlavorDetailed `json:"flavor" copier:"Flavor"`
        HostId string `json:"hostId" copier:"HostId"`
        Id string `json:"id" copier:"Id"`
        Image ImageDetailed `json:"image" copier:"Image"`
        KeyName string `json:"key_name" copier:"KeyName"`
        Links1 []Links1 `json:"links" copier:"Links1"`
        Metadata MetadataDetailed `json:"metadata" copier:"Metadata"`
        Status string `json:"status" copier:"Status"`
        TenantId string `json:"tenant_id" copier:"TenantId"`
        Updated string `json:"updated" copier:"Updated"`
        UserId string `json:"user_id" copier:"UserId"`
        Fault Fault `json:"fault" copier:"Fault"`
        Progress uint32 `json:"progress" copier:"Progress"`
        Locked bool `json:"locked" copier:"Locked"`
        HostStatus string  `json:"host_status" copier:"HostStatus"`
        Description string  `json:"description" copier:"Description"`
        Tags []string  `json:"tags" copier:"Tags"`
        TrustedImageCertificates string  `json:"trusted_image_certificates" copier:"TrustedImageCertificates"`
        ServerGroups string  `json:"server_groups" copier:"ServerGroups"`
        LockedReason string  `json:"locked_reason" copier:"LockedReason"`
        SecurityGroups []Security_groups `json:"security_groups" copier:"SecurityGroups"`

    }
    Addresses {
        private  Private  `json:"private" copier:"private"`

    }
    FlavorDetailed {
        Id  string  `json:"id" copier:"Id"`
        Links  string  `json:"links" copier:"Links"`
        Vcpus  string  `json:"vcpus" copier:"Vcpus"`
        Ram  uint32  `json:"ram" copier:"Ram"`
        Disk  uint32  `json:"ram" copier:"Disk"`
        Dphemeral  uint32  `json:"ephemeral" copier:"Dphemeral"`
        Swap  uint32  `json:"swap" copier:"Swap"`
        OriginalName  string  `json:"OriginalName" copier:"OriginalName"`
        ExtraSpecs   ExtraSpecs  `json:"Extra_specs" copier:"ExtraSpecs"`
    }
    Links1{
        Href string `json:"href " copier:"Href"`
        Rel string `json:"rel" copier:"Rel"`
    }
    ImageDetailed{
        Id string `json:"id " copier:"Id"`
        Links []Links `json:"links" copier:"Links"`
    }
    MetadataDetailed{

    }
    Fault{
        Code uint32 `json:"code " copier:"Code"`
        Created string `json:"created " copier:"Created"`
        Message string `json:"message " copier:"Message"`
        Details string `json:"details " copier:"Details"`

    }
    Private{
        Addr  string  `json:"addr" copier:"Addr"`
        Version  uint32  `json:"version" copier:"Version"`
    }
    ExtraSpecs{
        Capabilities string `json:"capabilities" copier:"Capabilities"`
    }
)

type(
    UpdateServerReq{
        ServerId  string  `form:"server_id" copier:"ServerId"`
        ServerUpdate    ServerUpdate  `json:"server_update" copier:"ServerUpdate"`
        Platform string `form:"platform,optional"`
    }
    ServerUpdate{
        Server    Server  `json:"server" copier:"Server"`
    }
    UpdateServerResp{
        Code int32 `json:"code,omitempty"`
        Msg  string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
        Server   ServersDetaileResp  `json:"server" copier:"Server"`
    }
)
type (
    StartServerReq {
        ServerId  string   `json:"server_id" copier:"ServerId"`
        Action []map[string]string `json:"action,optional" copier:"Action"`
        start_action  string   `json:"start_action" copier:"start_action"`
        Platform string `form:"platform,optional"`
    }
    StartServerResp {
        Msg  string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
        Code int32 `json:"code,omitempty"`
    }
   )

type(
    StopServerReq{
        ServerId  string   `json:"server_id" copier:"ServerId"`
        Action []map[string]string `json:"action,optional" copier:"Action"`
        stop_action  string   `json:"stop_action" copier:"stop_action"`
        Platform string `form:"platform,optional"`
    }
    StopServerResp {
        Msg  string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
        Code int32 `json:"code,omitempty"`
    }
)

type(
    RebootServerReq{
        ServerId  string   `json:"server_id" copier:"ServerId"`
        Reboot   Reboot  `json:"reboot" copier:"Reboot"`
        Platform string `form:"platform,optional"`
    }
    RebootServerResp {
        Msg  string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
        Code int32 `json:"code,omitempty"`
    }
    Reboot {
        Type string  `json:"type" copier:"Type"`
    }
)
type(
    PauseServerReq{
        ServerId  string   `json:"server_id" copier:"ServerId"`
        Action []map[string]string `json:"Action,optional" copier:"Action"`
        pause_action  string   `json:"pause_action" copier:"pause_action"`
        Platform string `form:"platform,optional"`
    }
    PauseServerResp {
        Msg  string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
        Code int32 `json:"code,omitempty"`
    }
)

type(
    UnpauseServerReq{
        ServerId  string   `json:"server_id" copier:"ServerId"`
        Action []map[string]string `json:"Action,optional" copier:"Action"`
        unpause_action  string   `json:"unpause_action" copier:"unpause_action"`
        Platform string `form:"platform,optional"`
    }
    UnpauseServerResp {
        Msg  string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
        Code int32 `json:"code,omitempty"`
    }
)

type (
    DeleteServerReq {
        ServerId string `form:"server_id" copier:"ServerId"`
        Platform string `form:"platform,optional"`
    }

    DeleteServerResp {
        Code int32 `json:"code,omitempty"`
        Msg string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
    }
)

type (
    CreateServerReq {
        Platform string `json:"platform,optional"`
        CrServer CrServer `json:"crserver" copier:"CrServer"`
    }
    CrServer {
        Server Server `json:"server" copier:"Server"`
    }
    CreateServerResp {
        Server ServerResp `json:"server" copier:"Server"`
        Code int32 `json:"code,omitempty"`
        Msg string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
    }
    Server {
        AvailabilityZone string `json:"availability_zone" copier:"AvailabilityZone"`
        Name string `json:"name,optional" copier:"Name"`
        FlavorRef string `json:"flavorRef,optional" copier:"FlavorRef"`
        Description string `json:"description,optional" copier:"Description"`
        ImageRef string `json:"imageRef,optional" copier:"ImageRef"`
        Networks []CreNetwork `json:"networks,optional" copier:"Networks"`
        //AdminPass      string    `json:"adminPass" copier:"AdminPass"`
        BlockDeviceMappingV2 []Block_device_mapping_v2 `json:"block_device_mapping_v2,optional" copier:"BlockDeviceMappingV2"`
        MinCount int32 `json:"min_count,optional" copier:"MinCount"`
    }
    CreNetwork {
        Uuid string `json:"uuid" copier:"Uuid"`
    }
    Security_groups_server {
        Name string `json:"name" copier:"Name"`
    }
    Block_device_mapping_v2 {
        SourceType string `json:"source_type" copier:"SourceType"`
        Uuid string `json:"uuid" copier:"Uuid"`
        BootIndex string `json:"boot_index" copier:"BootIndex"`
        DestinationType string `json:"destination_type" copier:"DestinationType"`
        DeleteOnTermination bool `json:"delete_on_termination" copier:"DeleteOnTermination"`
    }
    ServerResp {
        Id string `json:"id" copier:"Id"`
        Links []Links `json:"links" copier:"Links"`
        OSDCFDiskConfig string `json:"OS_DCF_diskConfig" copier:"OSDCFDiskConfig"`
        SecurityGroups []Security_groups_server `json:"security_groups" copier:"SecurityGroups"`
        AdminPass string `json:"adminPass" copier:"AdminPass"`
    }
)

type (
    CreateMulServerReq {
        CreateMulServer []CreateMulServer `json:"createMulServer,optional"`
    }
    CreateMulServer {
        Platform string `json:"platform,optional"`
        CrServer MulCrServer `json:"crserver" copier:"CrServer"`
    }
    MulCrServer {
        Server MulServer `json:"server" copier:"Server"`
    }
    MulServer {
        AvailabilityZone string `json:"availability_zone" copier:"AvailabilityZone"`
        Name string `json:"name,optional" copier:"Name"`
        FlavorRef string `json:"flavorRef,optional" copier:"FlavorRef"`
        Description string `json:"description,optional" copier:"Description"`
        ImageRef string `json:"imageRef,optional" copier:"ImageRef"`
        Networks []CreNetwork `json:"networks,optional" copier:"Networks"`
        MinCount int32 `json:"min_count,optional" copier:"MinCount"`
    }
    CreateMulServerResp {
        Server []MulServerResp `json:"server" copier:"Server"`
        Code int32 `json:"code,omitempty"`
        Msg string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
    }
    MulServerResp {
        Id string `json:"id" copier:"Id"`
        Links []Links `json:"links" copier:"Links"`
        OSDCFDiskConfig string `json:"OS_DCF_diskConfig" copier:"OSDCFDiskConfig"`
        SecurityGroups []Security_groups_server `json:"security_groups" copier:"SecurityGroups"`
        AdminPass string `json:"adminPass" copier:"AdminPass"`
    }
)

type(
    RebuildServerReq{
        ServerId  string   `json:"server_id" copier:"ServerId"`
        Platform string `form:"platform,optional"`
        Rebuild Rebuild `json:"rebuild" copier:"Rebuild"`
    }
    RebuildServerResp {
        Msg  string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
        Code int32 `json:"code,omitempty"`
    }
    Rebuild {
        ImageRef string `json:"imageRef" copier:"ImageRef"`
        AccessIPv4 string `json:"accessIPv4" copier:"AccessIPv4"`
        AccessIPv6 string `json:"accessIPv6" copier:"AccessIPv6"`
        AdminPass string `json:"adminPass" copier:"AdminPass"`
        Name string `json:"name" copier:"Name"`
        PreserveEphemeral bool `json:"preserve_ephemeral" copier:"PreserveEphemeral"`
        Description string `json:"description" copier:"Description"`
        KeyName string `json:"key_name" copier:"KeyName"`
        UserData string `json:"user_data" copier:"UserData"`
        Hostname string `json:"hostname" copier:"Hostname"`
        Metadata MetadataServer `json:"metadata" copier:"Metadata"`
        Personality []Personality `json:"personality" copier:"Personality"`
        trusted_image_certificates []Trusted_image_certificates `json:"trusted_image_certificates" copier:"trusted_image_certificates"`
    }
    MetadataServer {

    }
    Personality {
        Path string `json:"path" copier:"Path"`
        Contents string `json:"contents" copier:"Contents"`
    }
    Trusted_image_certificates{

    }
)

type(
    ResizeServerReq{
        ServerId  string   `json:"server_id" copier:"ServerId"`
        Platform  string `json:"platform,optional"`
        Resize  Resize   `json:"resize" copier:"Resize"`
    }
    ResizeServerResp {
        Msg  string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
        Code int32 `json:"code,omitempty"`
    }
    Resize{
        flavorRef  string   `json:"flavorRef" copier:"flavorRef"`
    }
)

type(
    MigrateServerReq{
        ServerId  string   `json:"server_id" copier:"ServerId"`
        Platform  string `json:"platform,optional"`
        Action []map[string]string `json:"Action,optional" copier:"Action"`
        MigrateAction  string `json:"migrate_action,optional" copier:"MigrateAction"`
        Migrate  Migrate   `json:"migrate" copier:"Migrate"`
    }
    MigrateServerResp {
        Msg  string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
        Code int32 `json:"code,omitempty"`
    }
    Migrate{
        host  []map[string]string `json:"host,optional" copier:"host"`
    }
)

type(
    ShelveServerReq{
        ServerId  string   `json:"server_id" copier:"ServerId"`
        Action []map[string]string `json:"Action,optional" copier:"Action"`
        shelve_action  string   `json:"shelve_action" copier:"shelve_action"`
        Platform string `form:"platform,optional"`
    }
    ShelveServerResp {
        Msg  string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
        Code int32 `json:"code,omitempty"`
    }
)

type(
    RescueServerReq{
        ServerId  string   `json:"server_id" copier:"ServerId"`
        Platform string `form:"platform,optional"`
        Rescue  Rescue   `json:"rescue" copier:"Rescue"`
    }
    RescueServerResp {
        Msg  string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
        Code int32 `json:"code,omitempty"`
    }
    Rescue{
        AdminPass string `json:"adminPass" copier:"AdminPass"`
        RescueImageRef string `json:"rescue_image_ref" copier:"RescueImageRef"`
    }
)

type(
    UnRescueServerReq{
        ServerId  string   `json:"server_id" copier:"ServerId"`
        Action []map[string]string `json:"Action,optional" copier:"Action"`
        Platform string `form:"platform,optional"`
        UnRescue_action  string   `json:"UnRescue_action" copier:"UnRescue_action"`
        Rescue  Rescue   `json:"rescue" copier:"Rescue"`
    }
    UnRescueServerResp {
        Msg  string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
        Code int32 `json:"code,omitempty"`
    }
)

type(
    ChangeAdministrativePasswordReq{
        ServerId  string   `json:"server_id" copier:"ServerId"`
        Changepassword  string   `json:"changePassword" copier:"Changepassword"`
        Platform string `form:"platform,optional"`
        ChangePassword  ChangePassword   `json:"changepassword" copier:"ChangePassword"`
    }
    ChangeAdministrativePasswordResp {
        Msg  string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
        Code int32 `json:"code,omitempty"`
    }
    ChangePassword {
        AdminPass string `json:"adminPass" copier:"AdminPass"`
    }
)

type(
    SuspendServerReq{
        ServerId  string   `json:"server_id" copier:"ServerId"`
        Action []map[string]string `json:"Action,optional" copier:"Action"`
        Platform string `form:"platform,optional"`
        UnRescue_action  string   `json:"UnRescue_action" copier:"UnRescue_action"`
        Rescue  Rescue   `json:"rescue" copier:"Rescue"`
    }
    SuspendServerResp {
        Msg  string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
        Code int32 `json:"code,omitempty"`
    }
)

type(
    AddSecurityGroupToServerReq{
        ServerId  string   `json:"server_id" copier:"ServerId"`
        Action []map[string]string `json:"Action,optional" copier:"Action"`
        Platform string `form:"platform,optional"`
        UnRescue_action  string   `json:"UnRescue_action" copier:"UnRescue_action"`
        AddSecurityGroup  AddSecurityGroup   `json:"addSecurityGroup" copier:"AddSecurityGroup"`
    }
    AddSecurityGroupToServerResp {
        Msg  string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
        Code int32 `json:"code,omitempty"`
    }
    AddSecurityGroup {
        Name  string   `json:"name" copier:"Name"`
    }
)

type(
    removeSecurityGroupReq{
        ServerId  string   `json:"server_id" copier:"ServerId"`
        Platform string `form:"platform,optional"`
        RemoveSecurityGroup  RemoveSecurityGroup   `json:"removeSecurityGroup" copier:"RemoveSecurityGroup"`
    }
    removeSecurityGroupResp {
        Msg  string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
        Code int32 `json:"code,omitempty"`
    }
    RemoveSecurityGroup {
        Name  string   `json:"name" copier:"Name"`
    }
)

type(
    CreateFlavorReq{
        Platform string `json:"platform,optional"`
        Flavor  FlavorServer   `json:"flavor" copier:"Flavor"`
    }
    CreateFlavorResp {
        Msg  string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
        Code int32 `json:"code,omitempty"`
    }
    FlavorServer {
        Name  string   `json:"name" copier:"Name"`
        Ram   uint32   `json:"ram" copier:"Ram"`
        disk   uint32   `json:"disk" copier:"disk"`
        vcpus   uint32   `json:"vcpus" copier:"vcpus"`
        id   string   `json:"id" copier:"id"`
        rxtx_factor   float64   `json:"rxtx_factor" copier:"rxtx_factor"`
        description   string   `json:"description" copier:"description"`
    }
)

type(
    DeleteFlavorReq{
        Platform string `form:"platform,optional"`
        ServerId  string   `json:"server_id" copier:"ServerId"`
        FlavorId  string   `json:"flavor_id" copier:"FlavorId"`
    }
    DeleteFlavorResp {
        Msg  string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
        Code int32 `json:"code,omitempty"`
    }
)

/****************** servers end*************************/

/******************find images end*************************/
type (
    ListImagesReq {
        Platform string `form:"platform,optional"`
    }
    ListImagesResp {
        First string `json:"first" copier:"First"`
        Next string `json:"next" copier:"Next"`
        Schema string `json:"schema" copier:"Schema"`
        Images []Images `json:"images" copier:"Images"`
        Code int32 `json:"code,omitempty"`
        Msg string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
    }
    Images {
        Status string `json:"status" copier:"Status"`
        Name string `json:"name" copier:"Name"`
        Tags []Tags `json:"tags" copier:"Tags"`
        Container_format string `json:"container_format" copier:"Container_format"`
        Created_at string `json:"created_at" copier:"Created_at"`
        Disk_format string `json:"disk_format" copier:"Disk_format"`
        Updated_at string `json:"updated_at" copier:"Updated_at"`
        Visibility string `json:"visibility" copier:"Visibility"`
        Self string `json:"self" copier:"Self"`
        min_disk uint32 `json:"min_disk" copier:"Min_disk"`
        Protected bool `json:"protected" copier:"Protected"`
        Id string `json:"id" copier:"Id"`
        File string `json:"file" copier:"File"`
        Checksum string `json:"checksum" copier:"Checksum"`
        Os_hash_algo string `json:"os_hash_algo" copier:"Os_hash_algo"`
        Os_hash_value string `json:"os_hash_value" copier:"Os_hash_value"`
        Os_hidden string `json:"os_hidden" copier:"Os_hidden"`
        Owner string `json:"owner" copier:"Owner"`
        Size uint32 `json:"size" copier:"Size"`
        Min_ram uint32 `json:"min_ram" copier:"Min_ram"`
        Schema string `json:"schema" copier:"Schema"`
        Virtual_size int32 `json:"virtual_size" copier:"Virtual_size"`
    }
    Tags {
    }
)

type (
    CreateImageReq {
        Container_format string `json:"container_format" copier:"Container_format"`
        Disk_format string `json:"disk_format" copier:"Disk_format"`
        Min_disk int32 `json:"min_disk" copier:"Min_disk"`
        Min_ram int32 `json:"min_ram" copier:"Min_ram"`
        Name string `json:"name" copier:"Name"`
        Protected bool `json:"protected" copier:"Protected"`
        Platform string `json:"platform,optional"`
        Visibility string `json:"visibility" copier:"Visibility"`
    }
    CreateImageResp {
        Location string `json:"location" copier:"Location"`
        Created_at string `json:"created_at" copier:"Created_at"`
        Container_format string `json:"Container_format" copier:"Container_format"`
        Disk_format string `json:"disk_format" copier:"Disk_format"`
        File string `json:"file" copier:"File"`
        Id string `json:"id" copier:"Id"`
        Min_disk int32 `json:"min_disk" copier:"Min_disk"`
        Min_ram int32 `json:"min_ram" copier:"Min_ram"`
        Status string `json:"status" copier:"Status"`
        Visibility string `json:"visibility" copier:"Visibility"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
)
type (
    UploadOsImageReq {
        ImageId string `form:"image_id" copier:"ImageId"`
        Platform string `form:"platform,optional"`
    }
    UploadOsImageResp {
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
)

type (
    DeleteImageReq {
        ImageId string `form:"image_id" copier:"ImageId"`
        Platform string `form:"platform,optional"`
    }
    DeleteImageResp {
        Code int32 `json:"code,omitempty"`
        Msg string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
    }
)
/******************find images end*************************/

/******************find Networks end*************************/
type (

    NetworkNum {
        NetworkNum int32 `json:"networkNum"`
        Code int32 `json:"code,omitempty"`
        Msg string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
    }
)

type (
    ImageNum {
        ImageNum int32 `json:"imageNum"`
        Code int32 `json:"code,omitempty"`
        Msg string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
    }
)

type (
    ListNetworksReq {
        Platform string `form:"platform,optional"`
    }
    ListNetworksResp {
        Networks []Network `json:"networks" copier:"Networks"`
        Code int32 `json:"code,omitempty"`
        Msg string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
    }
    Network {
        AdminStateUp bool `json:"admin_state_up,optional" copier:"AdminStateUp"`
        AvailabilityZoneHints []string `json:"availability_zone_hints,optional" copier:"AvailabilityZoneHints"`
        AvailabilityZones []string `json:"availability_zones,optional" copier:"AvailabilityZones"`
        CreatedAt string `json:"created_at,optional" copier:"CreatedAt"`
        DnsDomain string `json:"dns_domain,optional" copier:"DnsDomain"`
        Id string `json:"id,optional" copier:"Id"`
        Ipv4AddressScope string `json:"ipv4_address_scope,optional" copier:"Ipv4AddressScope"`
        Ipv6AddressScope string `json:"ipv6_address_scope,optional" copier:"Ipv6AddressScope"`
        L2Adjacency bool `json:"l2_adjacency,optional" copier:"L2Adjacency"`
        Mtu int64 `json:"mtu,optional" copier:"Mtu"`
        Name string `json:"name,optional" copier:"Name"`
        PortSecurityEnabled bool `json:"port_security_enabled,optional" copier:"PortSecurityEnabled"`
        ProjectId string `json:"project_id,optional" copier:"ProjectId"`
        QosPolicyId string `json:"qos_policy_id,optional" copier:"QosPolicyId"`
        RevisionNumber int64 `json:"revision_number,optional" copier:"RevisionNumber"`
        Shared bool `json:"shared,optional" copier:"Shared"`
        RouterExternal bool `json:"router_external,optional" copier:"RouterExternal"`
        Status string `json:"status,optional" copier:"Status"`
        Subnets []string `json:"subnets,optional" copier:"Subnets"`
        Tags []string `json:"tags,optional" copier:"Tags"`
        TenantId string `json:"tenant_id,optional" copier:"TenantId"`
        UpdatedAt string `json:"updated_at,optional" copier:"UpdatedAt"`
        VlanTransparent bool `json:"vlan_transparent,optional" copier:"VlanTransparent"`
        Description string `json:"description,optional" copier:"Description"`
        IsDefault bool `json:"is_default,optional" copier:"IsDefault"`
    }
)
type (
    DeleteNetworkReq {
        NetworkId string `form:"network_id" copier:"NetworkId"`
        Platform string `form:"platform,optional"`
    }
    DeleteNetworkResp {
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
)
type (
    CreateNetworkReq {
        Network CreateNetwork `json:"network" copier:"Network"`
        Platform string `json:"platform,optional"`
    }
    CreateNetworkResp {
        Network Network `json:"network" copier:"Network"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
    CreateNetwork {
        AdminStateUp bool `json:"admin_state_up" copier:"AdminStateUp"`
        Name string `json:"name" copier:"Name"`
        Shared bool `json:"shared" copier:"Shared"`
    }
)

type (
    CreateSubnetReq {
        Subnet Subnet `json:"subnet" copier:"Subnet"`
        Platform string `json:"platform,optional"`
    }
    CreateSubnetResp {
        Subnet SubnetResp `json:"subnet" copier:"Subnet"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
    Subnet {
        NetworkId string `json:"network_id" copier:"NetworkId"`
        Name string `json:"name" copier:"Name"`
        Cidr string `json:"cidr" copier:"Cidr"`
        Ip_version int32 `json:"ip_version" copier:"IpVersion"`
        Gateway_ip string `json:"gateway_ip" copier:"GatewayIp"`
        Enable_dhcp bool `json:"enable_dhcp" copier:"EnableDhcp"`
        Allocation_pools []Allocation_pools `json:"allocation_pools" copier:"AllocationPools"`
        Dns_nameservers []string `json:"dns_nameservers" copier:"DnsNameservers"`
        Host_routes []string `json:"host_routes" copier:"HostRoutes"`
    }
    SubnetResp {
        Name string `json:"name" copier:"Name"`
        Cidr string `json:"cidr" copier:"Cidr"`
        Ip_version int32 `json:"ip_version" copier:"Ip_version"`
        Gateway_ip string `json:"gateway_ip" copier:"Gateway_ip"`
        Enable_dhcp bool `json:"enable_dhcp" copier:"Enable_dhcp"`
        Allocation_pools []Allocation_pools `json:"allocation_pools" copier:"Allocation_pools"`
        Dns_nameservers []string `json:"dns_nameservers" copier:"Dns_nameservers"`
        Host_routes []string `json:"host_routes" copier:"Host_routes"`
        Network_id string `json:"network_id" copier:"Network_id"`
        Segment_id string `json:"segment_id" copier:"Segment_id"`
        Project_id string `json:"project_id" copier:"Project_id"`
        Tenant_id string `json:"tenant_id" copier:"Tenant_id"`
        Dns_publish_fixed_ip string `json:"Dns_publish_fixed_ip" copier:"Dns_publish_fixed_ip"`
        Id string `json:"id" copier:"Id"`
        Created_at string `json:"created_at" copier:"Created_at"`
        Description string `json:"description" copier:"Description"`
        Ipv6_address_mode string `json:"ipv6_address_mode" copier:"Ipv6_address_mode"`
        Ipv6_ra_mode string `json:"ipv6_ra_mode" copier:"Ipv6_ra_mode"`
        Revision_number string `json:"revision_number" copier:"Revision_number"`
        Service_types []string `json:"service_types" copier:"Service_types"`
        Subnetpool_id string `json:"subnetpool_id" copier:"Subnetpool_id"`
        Tags []string `json:"tags" copier:"Tags"`
        Updated_at string `json:"updated_at" copier:"Updated_at"`
    }
    Allocation_pools {
        Start string `json:"start" copier:"Start"`
        End string `json:"end" copier:"End"`
    }
)

type(
    ShowNetworkDetailsReq{
        NetworkId  string   `form:"network_id" copier:"NetworkId"`
        Platform string `form:"platform,optional"`
    }
    ShowNetworkDetailsResp{
        Network        Networkdetail   `json:"network" copier:"Network"`
        Msg            string    `json:"msg" copier:"Msg"`
        Code           int32     `json:"code" copier:"Code"`
        ErrorMsg       string     `json:"error_msg" copier:"ErrorMsg"`
    }
    Networkdetail {
        AdminStateUp  bool   `json:"admin_state_up,optional" copier:"AdminStateUp"`
        AvailabilityZoneHints  []string  `json:"availability_zone_hints,optional" copier:"AvailabilityZoneHints"`
        AvailabilityZones  []string  `json:"availability_zones,optional" copier:"AvailabilityZones"`
        CreatedAt  string    `json:"created_at,optional" copier:"CreatedAt"`
        DnsDomain  string   `json:"dns_domain,optional" copier:"DnsDomain"`
        Id  string   `json:"id" copier:"Id,optional"`
        Ipv4AddressScope  string   `json:"ipv4_address_scope,optional" copier:"Ipv4AddressScope"`
        Ipv6AddressScope  string   `json:"ipv6_address_scope,optional" copier:"Ipv6AddressScope"`
        L2Adjacency       bool   `json:"l2_adjacency,optional" copier:"L2Adjacency"`
        Mtu               int64   `json:"mtu" copier:"Mtu"`
        Name              string   `json:"name" copier:"Name"`
        PortSecurityEnabled    bool   `json:"port_security_enabled" copier:"PortSecurityEnabled"`
        ProjectId        string   `json:"project_id" copier:"ProjectId"`
        QosPolicyId    string   `json:"qos_policy_id" copier:"QosPolicyId"`
        RevisionNumber   int64   `json:"revision_number" copier:"RevisionNumber"`
        Shared         bool   `json:"shared" copier:"Shared"`
        Status         string   `json:"status" copier:"Status"`
        Subnets        []string   `json:"subnets" copier:"Subnets"`
        TenantId      string   `json:"tenant_id" copier:"TenantId"`
        VlanTransparent  bool  `json:"vlan_transparent" copier:"VlanTransparent"`
        Description    string  `json:"description" copier:"Description"`
        IsDefault      bool  `json:"is_default" copier:"IsDefault"`
        Tags           []string  `json:"tags" copier:"Tags"`
    }

)
type(
    UpdateNetworkReq {
        NetworkId  string    `form:"network_id" copier:"NetworkId"`
        Network    Network   `json:"network" copier:"Network"`
        Platform string `form:"platform,optional"`
    }
    UpdateNetworkResp {
        Network        Network   `json:"network" copier:"Network"`
        Msg            string    `json:"msg" copier:"Msg"`
        Code           int32     `json:"code" copier:"Code"`
        ErrorMsg       string     `json:"error_msg" copier:"ErrorMsg"`
    }
)

type(
    BulkCreateNetworksReq {
        Network []CreateNetwork `json:"network" copier:"Network"`
        Platform string `json:"platform,optional"`
    }
    BulkCreateNetworksResp {
        Network []Network `json:"network" copier:"Network"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
)

type(
    ListSubnetsReq {
        Limit int32 `json:"limit,optional"`
        OffSet int32 `json:"offSet,optional"`
        Platform string `form:"platform,optional"`
    }
    ListSubnetsResp {
        Subnets []Subnets `json:"subnets" copier:"Subnets"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
    Subnets {
        Name string `json:"name,optional" copier:"Name"`
        Enable_dhcp bool `json:"enable_dhcp,optional" copier:"Enable_dhcp"`
        NetworkId string `json:"network_id,optional" copier:"NetworkId"`
        SegmentId string `json:"segment_id,optional" copier:"SegmentId"`
        ProjectId string `json:"project_id,optional" copier:"ProjectId"`
        TenantId string `json:"tenant_id,optional" copier:"TenantId"`
        DnsNameservers string `json:"dns_nameservers,optional" copier:"DnsNameservers"`
        dns_publish_fixed_ip bool `json:"dns_publish_fixed_ip,optional" copier:"dns_publish_fixed_ip"`
        allocation_pools []Allocation_pool `json:"allocation_pools,optional" copier:"allocation_pools"`
        host_routes []string `json:"host_routes,optional" copier:"host_routes"`
        ip_version uint32 `json:"ip_version,optional" copier:"ip_version"`
        gateway_ip string `json:"gateway_ip,optional" copier:"gateway_ip"`
        cidr string `json:"cidr,optional" copier:"cidr"`
        id string `json:"id,optional" copier:"id"`
        description string `json:"description,optional" copier:"description"`
        ipv6_address_mode string `json:"ipv6_address_mode,optional" copier:"ipv6_address_mode"`
        ipv6_ra_mode string `json:"ipv6_ra_mode,optional" copier:"ipv6_ra_mode"`
        revision_number uint32 `json:"revision_number,optional" copier:"revision_number"`
        service_types []string `json:"service_types,optional" copier:"service_types"`
        subnetpool_id string `json:"subnetpool_id,optional" copier:"subnetpool_id"`
        tags []string `json:"tags,optional" copier:"tags"`
        updated_at string `json:"updated_at,optional" copier:"updated_at"`
    }
    Allocation_pool {
        start string `json:"start,optional" copier:"start"`
        end   string `json:"end,optional" copier:"end"`
    }
)

type(
    DeleteSubnetReq{
        subnetId string `json:"subnet_id,optional" copier:"subnetId"`
        Platform string `form:"platform,optional" copier:"Platform"`
    }
    DeleteSubnetResp{
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
)

type(
    UpdateSubnetReq{
        subnetId string `json:"subnet_id,optional" copier:"subnetId"`
        Platform string `form:"platform,optional" copier:"Platform"`
    }
    UpdateSubnetResp{
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
)

type(
    CreateNetworkSegmentRangeReq{
        NetworkSegmentRange Network_segment_range `json:"network_segment_range,optional" copier:"NetworkSegmentRange"`
        Platform string `json:"platform,optional" copier:"Platform"`
    }
    CreateNetworkSegmentRangeResp{
        NetworkSegmentRange Network_segment_range `json:"network_segment_range,optional" copier:"NetworkSegmentRange"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
    Network_segment_range {
        id string `json:"id,optional" copier:"id"`
        name string `json:"name,optional" copier:"name"`
        description string `json:"description,optional" copier:"description"`
        shared bool `json:"shared,optional" copier:"shared"`
        project_id string `json:"project_id,optional" copier:"project_id"`
        network_type string `json:"network_type,optional" copier:"network_type"`
        physical_network string `json:"physical_network,optional" copier:"physical_network"`
        minimum uint32 `json:"minimum,optional" copier:"minimum"`
        maximum uint32 `json:"maximum,optional" copier:"maximum"`
        available []uint32 `json:"available,optional" copier:"available"`
        used Used `json:"used,optional" copier:"used"`
        created_at int64 `json:"created_at,optional" copier:"created_at"`
        updated_at int64 `json:"updated_at,optional" copier:"updated_at"`
        revision_number uint32 `json:"revision_number,optional" copier:"revision_number"`
        tags  []string `json:"tags,optional" copier:"tags"`
    }
    Used {
    }
)

type (
    ListNetworkSegmentRangesReq{
        Limit int32 `json:"limit,optional"`
        OffSet int32 `json:"offSet,optional"`
        Platform string `form:"platform,optional"`
    }

    ListNetworkSegmentRangesResp{
        NetworkSegmentRange []Network_segment_range `json:"network_segment_range,optional" copier:"NetworkSegmentRange"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }

    Network_segment_ranges {
        id string `json:"id,optional" copier:"id"`
        name string `json:"name,optional" copier:"name"`
        description string `json:"description,optional" copier:"description"`
        shared bool `json:"shared,optional" copier:"shared"`
        project_id string `json:"project_id,optional" copier:"project_id"`
        network_type string `json:"network_type,optional" copier:"network_type"`
        physical_network string `json:"physical_network,optional" copier:"physical_network"`
        minimum uint32 `json:"minimum,optional" copier:"minimum"`
        maximum uint32 `json:"maximum,optional" copier:"maximum"`
        available []uint32 `json:"available,optional" copier:"available"`
        used Used `json:"used,optional" copier:"used"`
        created_at int64 `json:"created_at,optional" copier:"created_at"`
        updated_at int64 `json:"updated_at,optional" copier:"updated_at"`
        revision_number uint32 `json:"revision_number,optional" copier:"revision_number"`
        tags  []string `json:"tags,optional" copier:"tags"`
    }
)

type(
    DeleteNetworkSegmentRangesReq{
        network_segment_range_id string `json:"network_segment_range_id,optional" copier:"network_segment_range_id"`
        Platform string `form:"platform,optional"`
    }
    DeleteNetworkSegmentRangesResp{
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
)

type(
    UpdateNetworkSegmentRangesReq{
        network_segment_range_id string `json:"network_segment_range_id,optional" copier:"network_segment_range_id"`
        NetworkSegmentRange Network_segment_range `json:"network_segment_range,optional" copier:"NetworkSegmentRange"`
        Platform string `form:"platform,optional" copier:"Platform"`
    }
    UpdateNetworkSegmentRangesResp{
        NetworkSegmentRange Network_segment_range `json:"network_segment_range,optional" copier:"NetworkSegmentRange"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
)

type(
    ShowNetworkSegmentRangeDetailsReq{
        network_segment_range_id string `json:"network_segment_range_id,optional" copier:"network_segment_range_id"`
        Platform string `json:"platform,optional" copier:"Platform"`
    }
    ShowNetworkSegmentRangeDetailsResp{
        NetworkSegmentRange Network_segment_range `json:"network_segment_range,optional" copier:"NetworkSegmentRange"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
)

// port
type(
    CreatePortReq{
        port Port `json:"port,optional" copier:"port"`
        Platform string `json:"platform,optional" copier:"Platform"`
    }
    Port{
        admin_state_up bool `json:"admin_state_up,optional" copier:"admin_state_up"`
        dns_domain string `json:"dns_domain,optional" copier:"dns_domain"`
        dns_name string `json:"dns_name,optional" copier:"dns_name"`
        name string `json:"name,optional" copier:"name"`
        network_id string `json:"network_id,optional" copier:"network_id"`
        qos_policy_id string `json:"qos_policy_id,optional" copier:"qos_policy_id"`
        port_security_enabled bool `json:"port_security_enabled,optional" copier:"port_security_enabled"`
        allowed_address_pairs []Allowed_address_pairs `json:"allowed_address_pairs,optional" copier:"allowed_address_pairs"`
        propagate_uplink_status bool `json:"propagate_uplink_status,optional" copier:"propagate_uplink_status"`
        hardware_offload_type string `json:"hardware_offload_type,optional" copier:"hardware_offload_type"`
        created_at string `json:"created_at,optional" copier:"created_at"`
        data_plane_status string `json:"data_plane_status,optional" copier:"data_plane_status"`
        description string `json:"description,optional" copier:"description"`
        device_id string `json:"device_id,optional" copier:"device_id"`
        device_owner string `json:"device_owner,optional" copier:"device_owner"`
        dns_assignment Dns_assignment `json:"dns_assignment,optional" copier:"dns_assignment"`
        id string `json:"id,optional" copier:"id"`
        ip_allocation string `json:"ip_allocation,optional" copier:"ip_allocation"`
        mac_address string `json:"mac_address,optional" copier:"mac_address"`
        project_id string `json:"project_id,optional" copier:"project_id"`
        revision_number uint32 `json:"revision_number,optional" copier:"revision_number"`
        security_groups []string `json:"security_groups,optional" copier:"revision_number"`
        status uint32 `json:"status,optional" copier:"revision_number"`
        tags  []string `json:"tags,optional" copier:"tags"`
        tenant_id  string `json:"tenant_id,optional" copier:"tenant_id"`
        updated_at  string `json:"updated_at,optional" copier:"updated_at"`
        qos_network_policy_id  string `json:"qos_network_policy_id,optional" copier:"qos_network_policy_id"`
    }
    Allowed_address_pairs {
        ip_address string `json:"ip_address,optional" copier:"ip_address"`
        mac_address string `json:"mac_address,optional" copier:"mac_address"`
    }
    CreatePortResp{
        port Port `json:"port,optional" copier:"port"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
)

type (
    ListPortsReq{
        Limit int32 `json:"limit,optional"`
        OffSet int32 `json:"offSet,optional"`
        Platform string `form:"platform,optional"`
    }
    ListPortsResp{
        ports []PortLists `json:"ports,optional" copier:"ports"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
    PortLists {
        admin_state_up bool `json:"admin_state_up,optional" copier:"admin_state_up"`
        allowed_address_pairs []Allowed_address_pairs `json:"allowed_address_pairs,optional" copier:"allowed_address_pairs"`
        created_at string `json:"created_at,optional" copier:"created_at"`
        data_plane_status string `json:"data_plane_status,optional" copier:"data_plane_status"`
        description string `json:"description,optional" copier:"description"`
        device_id string `json:"device_id,optional" copier:"device_id"`
        device_owner string `json:"device_owner,optional" copier:"device_owner"`
        dns_assignment []Dns_assignment `json:"dns_assignment,optional" copier:"dns_assignment"`
        extra_dhcp_opts []Extra_dhcp_opts `json:"extra_dhcp_opts,optional" copier:"extra_dhcp_opts"`
        fixed_ips []Fixed_ips `json:"fixed_ips,optional" copier:"fixed_ips"`
        id string `json:"id,optional" copier:"id"`
        ip_allocation string `json:"ip_allocation,optional" copier:"ip_allocation"`
        mac_address string `json:"mac_address,optional" copier:"mac_address"`
        name string `json:"name,optional" copier:"name"`
        network_id string `json:"network_id,optional" copier:"network_id"`
        port_security_enabled bool `json:"port_security_enabled,optional" copier:"port_security_enabled"`
        project_id string `json:"project_id,optional" copier:"project_id"`
        revision_number uint32 `json:"project_id,optional" copier:"project_id"`
        security_groups []string `json:"security_groups,optional" copier:"security_groups"`
        status  string `json:"status,optional" copier:"status"`
        tags  []string `json:"tags,optional" copier:"tags"`
        tenant_id string `json:"tenant_id,optional" copier:"tenant_id"`
        updated_at string `json:"updated_at,optional" copier:"updated_at"`
        qos_network_policy_id string `json:"qos_network_policy_id,optional" copier:"qos_network_policy_id"`
        qos_policy_id string `json:"qos_policy_id,optional" copier:"qos_policy_id"`
        propagate_uplink_status bool `json:"propagate_uplink_status,optional" copier:"propagate_uplink_status"`
        hardware_offload_type string `json:"hardware_offload_type,optional" copier:"hardware_offload_type"`
    }
    Dns_assignment {
        hostname string `json:"hostname,optional" copier:"hostname"`
        ip_address string `json:"ip_address,optional" copier:"ip_address"`
        opt_name string `json:"opt_name,optional" copier:"opt_name"`
    }
    Extra_dhcp_opts {
        opt_value string `json:"opt_value,optional" copier:"opt_value"`
        ip_version uint32 `json:"ip_version,optional" copier:"ip_version"`
        fqdn string `json:"fqdn,optional" copier:"fqdn"`
    }
    Fixed_ips {
        ip_address string `json:"ip_address,optional" copier:"ip_address"`
        subnet_id string `json:"subnet_id,optional" copier:"subnet_id"`
    }
)

type(
    DeletePortReq{
        port_id string `json:"port_id,optional" copier:"port_id"`
        platform string `form:"platform,optional" copier:"platform"`
    }
    DeletePortResp{
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
)

type(
    UpdatePortReq{
        port_id string `json:"port_id,optional" copier:"port_id"`
        port Port `json:"port,optional" copier:"port"`
        platform string `form:"platform,optional" copier:"platform"`
    }
    UpdatePortResp{
        port Port `json:"port,optional" copier:"port"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
)

type(
    ShowPortDetailsReq{
        port_id string `json:"port_id,optional" copier:"port_id"`
        fields string `json:"fields,optional" copier:"fields"`
        platform string `form:"platform,optional" copier:"platform"`
    }
    ShowPortDetailsResp{
        port Port `json:"port,optional" copier:"port"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
)

//Router
type(
    ListRoutersReq{
        Limit int32 `json:"limit,optional"`
        OffSet int32 `json:"offSet,optional"`
        Platform string `form:"platform,optional"`
    }
    ListRoutersResp{
        routers []Routers `json:"routers,optional" copier:"routers"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
    Routers{
        admin_state_up bool `json:"admin_state_up,optional" copier:"admin_state_up"`
        availability_zone_hints []Availability_zone_hints  `json:"availability_zone_hints,optional" copier:"availability_zone_hints"`
        availability_zones []string `json:"availability_zones,optional" copier:"availability_zones"`
        created_at int64 `json:"created_at,optional" copier:"created_at"`
        description string `json:"description,optional" copier:"description"`
        distributed string `json:"distributed,optional" copier:"distributed"`
        external_gateway_info External_gateway_info `json:"external_gateway_info,optional" copier:"external_gateway_info"`
        flavor_id string `json:"flavor_id,optional" copier:"flavor_id"`
        ha bool `json:"ha,optional" copier:"ha"`
        id bool `json:"id,optional" copier:"id"`
        name string `json:"name,optional" copier:"name"`
        revision_number uint32 `json:"revision_number,optional" copier:"revision_number"`
        routes []Routes `json:"routes,optional" copier:"routes"`
        status string `json:"status,optional" copier:"status"`
        updated_at int64 `json:"updated_at,optional" copier:"updated_at"`
        project_id string `json:"project_id,optional" copier:"project_id"`
        tenant_id string `json:"tenant_id,optional" copier:"tenant_id"`
        service_type_id string `json:"service_type_id,optional" copier:"service_type_id"`
        tags  []string `json:"tags,optional" copier:"tags"`
        conntrack_helpers Conntrack_helpers  `json:"conntrack_helpers,optional" copier:"conntrack_helpers"`
    }
    Availability_zone_hints{

    }
    External_gateway_info{
        enable_snat string `json:"enable_snat,optional" copier:"enable_snat"`
        external_fixed_ips []External_fixed_ips `json:"external_fixed_ips,optional" copier:"external_fixed_ips"`
        platform string `json:"platform,optional" copier:"platform"`
    }
    External_fixed_ips{
        destination string `json:"destination,optional" copier:"destination"`
        subnet_id string `json:"subnet_id,optional" copier:"subnet_id"`
    }
    Routes{
        ip_address string `json:"ip_address,optional" copier:"ip_address"`
        nexthop string `json:"nexthop,optional" copier:"nexthop"`
    }
    Conntrack_helpers{
        protocol string `json:"protocol,optional" copier:"protocol"`
        helper   string `json:"helper,optional" copier:"helper"`
        port     uint32 `json:"port,optional" copier:"port"`

    }
)

type(
    CreateRouterReq{
        router Router `json:"router,optional" copier:"router"`
        Platform string `json:"platform,optional" copier:"Platform"`
    }
    CreateRouterResp{
        router Router `json:"router,optional" copier:"router"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
    Router{
        name string `json:"name,optional" copier:"name"`
        external_gateway_info External_gateway_info `json:"external_gateway_info,optional" copier:"external_gateway_info"`
        admin_state_up bool `json:"admin_state_up,optional" copier:"admin_state_up"`
        availability_zone_hints []Availability_zone_hints `json:"availability_zone_hints,optional" copier:"availability_zone_hints"`
        availability_zones []string `json:"availability_zones,optional" copier:"availability_zones"`
        created_at int64 `json:"created_at,optional" copier:"created_at"`
        description string `json:"description,optional" copier:"description"`
        distributed bool `json:"distributed,optional" copier:"distributed"`
        flavor_id string `json:"flavor_id,optional" copier:"flavor_id"`
        ha bool `json:"ha,optional" copier:"ha"`
        id string `json:"id,optional" copier:"id"`
        routers []Routers `json:"routers,optional" copier:"routers"`
        status string `json:"status,optional" copier:"status"`
        updated_at int64 `json:"updated_at,optional" copier:"updated_at"`
        project_id string `json:"project_id,optional" copier:"project_id"`
        tenant_id string `json:"tenant_id,optional" copier:"tenant_id"`
        service_type_id string `json:"service_type_id,optional" copier:"service_type_id"`
        tags  []string `json:"tags,optional" copier:"tags"`
        conntrack_helpers Conntrack_helpers  `json:"conntrack_helpers,optional" copier:"conntrack_helpers"`
    }
)

type(
      UpdateRouterReq{
          router Router `json:"router,optional" copier:"router"`
          Platform string `form:"platform,optional" copier:"Platform"`

      }
      UpdateRouterResp{
          router Router `json:"router,optional" copier:"router"`
          Code int32 `json:"code,omitempty" copier:"Code"`
          Msg string `json:"msg,omitempty" copier:"Msg"`
          ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
      }
)

type(
    ShowRouterDetailsReq{
        router Router `json:"router,optional" copier:"router"`
        Platform string `form:"platform,optional" copier:"Platform"`

    }
    ShowRouterDetailsResp{
        router Router `json:"router,optional" copier:"router"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
)

type(
    DeleteRouterReq{
        Platform string `form:"platform,optional" copier:"Platform"`
        router_id string `json:"router_id,optional" copier:"router_id"`
    }
    DeleteRouterResp{
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
)

//浮动IPs
type(
    ListFloatingIPsReq{
        Platform string `form:"platform,optional" copier:"Platform"`
        Limit int32 `json:"limit,optional" copier:"Limit"`
        OffSet int32 `json:"offSet,optional" copier:"OffSet"`
    }
    ListFloatingIPsResp{
        floatingips []Floatingips `json:"floatingips,omitempty" copier:"floatingips"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
    Floatingips{
        router_id string `json:"router_id,optional" copier:"router_id"`
        description string `json:"description,optional" copier:"description"`
        dns_domain string `json:"dns_domain,optional" copier:"dns_domain"`
        dns_name string `json:"dns_name,optional" copier:"dns_name"`
        created_at int64 `json:"created_at,optional" copier:"created_at"`
        updated_at int64 `json:"updated_at,optional" copier:"updated_at"`
        revision_number uint32 `json:"revision_number,optional" copier:"revision_number"`
        project_id string `json:"project_id,optional" copier:"project_id"`
        tenant_id string `json:"tenant_id,optional" copier:"tenant_id"`
        floating_network_id string `json:"floating_network_id,optional" copier:"floating_network_id"`
        fixed_ip_address string `json:"fixed_ip_address,optional" copier:"fixed_ip_address"`
        floating_ip_address string `json:"floating_ip_address,optional" copier:"floating_ip_address"`
        port_id string `json:"port_id,optional" copier:"port_id"`
        id string `json:"id,optional" copier:"id"`
        status string `json:"status,optional" copier:"status"`
        port_details Port_details `json:"port_details,optional" copier:"port_details"`
        tags  []string `json:"tags,optional" copier:"tags"`
        port_forwardings  []Port_forwardings `json:"port_forwardings,optional" copier:"port_forwardings"`
        qos_network_policy_id string `json:"qos_network_policy_id,optional" copier:"qos_network_policy_id"`
        qos_policy_id string `json:"qos_policy_id,optional" copier:"qos_policy_id"`
    }
    Port_details{
        status string `json:"status,optional" copier:"status"`
        name string `json:"name,optional" copier:"name"`
        admin_state_up bool `json:"admin_state_up,optional" copier:"admin_state_up"`
        network_id string `json:"network_id,optional" copier:"network_id"`
        device_owner string `json:"device_owner,optional" copier:"device_owner"`
        mac_address string `json:"mac_address,optional" copier:"mac_address"`
        device_id string `json:"device_id,optional" copier:"device_id"`
    }
    Port_forwardings{
        protocol string `json:"protocol,optional" copier:"protocol"`
        internal_ip_address string `json:"internal_ip_address,optional" copier:"internal_ip_address"`
        internal_port string `json:"internal_port,optional" copier:"internal_port"`
        internal_port_id string `json:"internal_port_id,optional" copier:"internal_port_id"`
        id string `json:"id,optional" copier:"id"`
    }
)

type(
    CreateFloatingIPReq{
        floatingip Floatingip `json:"floatingip,optional" copier:"floatingip"`
        Platform string `json:"platform,optional" copier:"Platform"`
    }
    CreateFloatingIPResp{
        floatingip Floatingip `json:"floatingip,omitempty" copier:"floatingip"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
    Floatingip{
        fixed_ip_address string `json:"fixed_ip_address,optional" copier:"fixed_ip_address"`
        floating_ip_address string `json:"floating_ip_address,optional" copier:"floating_ip_address"`
        floating_network_id string `json:"floating_network_id,optional" copier:"floating_network_id"`
        id string `json:"id,optional" copier:"id"`
        port_id string `json:"port_id,optional" copier:"port_id"`
        router_id string `json:"router_id,optional" copier:"router_id"`
        status string `json:"status,optional" copier:"status"`
        tenant_id string `json:"tenant_id,optional" copier:"tenant_id"`
        description string `json:"description,optional" copier:"description"`
        dns_domain string `json:"dns_domain,optional" copier:"dns_domain"`
        dns_name string `json:"dns_name,optional" copier:"dns_name"`
        created_at int64 `json:"created_at,optional" copier:"created_at"`
        updated_at int64 `json:"updated_at,optional" copier:"updated_at"`
        revision_number uint32 `json:"revision_number,optional" copier:"revision_number"`
        tags  []string `json:"tags,optional" copier:"tags"`
        port_details Port_details `json:"port_details,optional" copier:"port_details"`
        port_forwardings  []Port_forwardings `json:"port_forwardings,optional" copier:"port_forwardings"`
        qos_policy_id string `json:"qos_policy_id,optional" copier:"qos_policy_id"`
    }
)

type (
    UpdateFloatingIPReq{
        Platform string `form:"platform,optional" copier:"Platform"`
        floatingip_id string `json:"floatingip_id,optional" copier:"floatingip_id"`
        floatingip Floatingip `json:"floatingip,optional" copier:"floatingip"`
   }
    UpdateFloatingIPResp{
        floatingip Floatingip `json:"floatingip,omitempty" copier:"floatingip"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
)

type (
    DeleteFloatingIPReq{
        Platform string `form:"platform,optional" copier:"Platform"`
        floatingip_id string `json:"floatingip_id,optional" copier:"floatingip_id"`
    }
    DeleteFloatingIPResp{
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
)

type (
    ShowFloatingIPDetailsReq{
        Platform string `json:"platform,optional" copier:"Platform"`
        floatingip_id string `json:"floatingip_id,optional" copier:"floatingip_id"`
    }
    ShowFloatingIPDetailsResp{
        floatingip Floatingip `json:"floatingip,omitempty" copier:"floatingip"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
)

//firewall
type (
    ListFirewallGroupsReq{
        Platform string `form:"platform,optional" copier:"Platform"`
        fields string `json:"fields,optional" copier:"fields"`
    }
    ListFirewallGroupsResp{
        firewall_groups Firewall_groups `json:"firewall_groups,omitempty" copier:"firewall_groups"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
    Firewall_groups {
        AdminStateUp bool `json:"admin_state_up,optional" copier:"AdminStateUp"`
        description  string `json:"description,optional" copier:"description"`
        egress_firewall_policy_id  string `json:"egress_firewall_policy_id,optional" copier:"egress_firewall_policy_id"`
        id  string `json:"id,optional" copier:"id"`
        ingress_firewall_policy_id  string `json:"ingress_firewall_policy_id,optional" copier:"ingress_firewall_policy_id"`
        name  string `json:"name,optional" copier:"name"`
        ports  []string `json:"ports,optional" copier:"ports"`
        shared  bool `json:"shared,optional" copier:"shared"`
        project_id  string `json:"project_id,optional" copier:"project_id"`
        status  string `json:"status,optional" copier:"status"`
        tenant_id  string `json:"tenant_id,optional" copier:"tenant_id"`
    }
)

type(
    DeleteFirewallGroupReq {
        firewall_group_id  string `json:"firewall_group_id,optional" copier:"firewall_group_id"`
        Platform string `form:"platform,optional" copier:"Platform"`
    }
    DeleteFirewallGroupResp {
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
)

type(
    CreateFirewallGroupReq{
        firewall_group  Firewall_group `json:"firewall_group,optional" copier:"firewall_group"`
        Platform string `json:"platform,optional" copier:"Platform"`
    }
    CreateFirewallGroupResp{
        firewall_group  Firewall_group `json:"firewall_group,optional" copier:"firewall_group"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
    Firewall_group {
        admin_state_up bool `json:"admin_state_up,optional" copier:"admin_state_up"`
        egress_firewall_policy_id string `json:"egress_firewall_policy_id,optional" copier:"egress_firewall_policy_id"`
        ingress_firewall_policy_id string `json:"ingress_firewall_policy_id,optional" copier:"ingress_firewall_policy_id"`
        description string `json:"description,optional" copier:"description"`
        id string `json:"id,optional" copier:"id"`
        name string `json:"name,optional" copier:"name"`
        ports []string `json:"ports,optional" copier:"ports"`
        project_id string `json:"project_id,optional" copier:"project_id"`
        shared bool `json:"shared,optional" copier:"shared"`
        status string `json:"status,optional" copier:"status"`
        tenant_id string `json:"tenant_id,optional" copier:"tenant_id"`
    }
)

type (
     UpdateFirewallGroupReq{
         firewall_group  Firewall_group `json:"firewall_group,optional" copier:"firewall_group"`
         Platform string `form:"platform,optional" copier:"Platform"`
         firewall_group_id  string `json:"firewall_group_id,optional" copier:"firewall_group_id"`
     }
     UpdateFirewallGroupResp{
         firewall_group  Firewall_group `json:"firewall_group,optional" copier:"firewall_group"`
         Code int32 `json:"code,omitempty" copier:"Code"`
         Msg string `json:"msg,omitempty" copier:"Msg"`
         ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
     }
)

type (
     ShowFirewallGroupDetailsReq{
         Platform string `form:"platform,optional" copier:"Platform"`
         firewall_group_id  string `json:"firewall_group_id,optional" copier:"firewall_group_id"`
     }
     ShowFirewallGroupDetailsResp{
         firewall_group  Firewall_group `json:"firewall_group,optional" copier:"firewall_group"`
         Code int32 `json:"code,omitempty" copier:"Code"`
         Msg string `json:"msg,omitempty" copier:"Msg"`
         ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
     }
)

type(
    CreateFirewallPolicyReq{
        Platform string `json:"platform,optional" copier:"Platform"`
        firewall_policy  Firewall_policy `json:"firewall_policy,optional" copier:"firewall_policy"`
    }
    CreateFirewallPolicyResp{
        firewall_policy  Firewall_policy `json:"firewall_policy,optional" copier:"firewall_policy"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
    Firewall_policy{
        name string `json:"name,optional" copier:"name"`
        firewall_rules  []string `json:"firewall_rules,optional" copier:"firewall_rules"`
        audited bool `json:"audited,optional" copier:"audited"`
        description string `json:"description,optional" copier:"description"`
        id string `json:"id,optional" copier:"id"`
        project_id string `json:"project_id,optional" copier:"project_id"`
        shared bool `json:"shared,optional" copier:"shared"`
        tenant_id string `json:"tenant_id,optional" copier:"tenant_id"`
    }
)

type(
    DeleteFirewallPolicyReq{
        Platform string `form:"platform,optional" copier:"Platform"`
        firewall_policy_id  string `json:"firewall_policy_id,optional" copier:"firewall_policy_id"`
    }
    DeleteFirewallPolicyResp{
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
)

type(
    ListFirewallPoliciesReq{
        Platform string `form:"platform,optional" copier:"Platform"`
        fields  string `json:"fields,optional" copier:"fields"`
    }
    ListFirewallPoliciesResp{
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
        firewall_policies  []Firewall_policies `json:"firewall_policies,optional" copier:"firewall_policies"`

    }
    Firewall_policies{
        audited bool `json:"audited,optional" copier:"audited"`
        description string `json:"description,optional" copier:"description"`
        firewall_rules []string `json:"firewall_rules,optional" copier:"firewall_rules"`
        id string `json:"id,optional" copier:"id"`
        name string `json:"name,optional" copier:"name"`
        project_id string `json:"project_id,optional" copier:"project_id"`
        shared bool `json:"shared,optional" copier:"shared"`
        tenant_id string `json:"tenant_id,optional" copier:"tenant_id"`
    }
)

type(
    ShowFirewallPolicyDetailsReq{
        Platform string `json:"platform,optional" copier:"Platform"`
        firewall_policy_id  string `json:"firewall_policy_id,optional" copier:"firewall_policy_id"`
    }
    ShowFirewallPolicyDetailsResp{
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
        firewall_policy  Firewall_policy `json:"firewall_policy,optional" copier:"firewall_policy"`
    }
)

type(
    CreateFirewallRuleReq{
        Platform string `json:"platform,optional" copier:"Platform"`
        firewall_rule  Firewall_rule `json:"firewall_rule,optional" copier:"firewall_rule"`
    }
    CreateFirewallRuleResp{
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
        firewall_rule  Firewall_rule `json:"firewall_rule,optional" copier:"firewall_rule"`
    }
    Firewall_rule {
        action string `json:"action,optional" copier:"action"`
        description string `json:"description,optional" copier:"description"`
        destination_ip_address string `json:"destination_ip_address,optional" copier:"destination_ip_address"`
        destination_firewall_group_id string `json:"destination_firewall_group_id,optional" copier:"destination_firewall_group_id"`
        destination_port string `json:"destination_port,optional" copier:"destination_port"`
        enabled bool `json:"enabled,optional" copier:"enabled"`
        id string `json:"id,optional" copier:"id"`
        ip_version uint32 `json:"ip_version,optional" copier:"ip_version"`
        name string `json:"name,optional" copier:"name"`
        project_id string `json:"project_id,optional" copier:"project_id"`
        protocol string `json:"protocol,optional" copier:"protocol"`
        shared bool `json:"shared,optional" copier:"shared"`
        source_firewall_group_id string `json:"source_firewall_group_id,optional" copier:"source_firewall_group_id"`
        source_ip_address string `json:"source_ip_address,optional" copier:"source_ip_address"`
        source_port string `json:"source_port,optional" copier:"source_port"`
        tenant_id string `json:"tenant_id,optional" copier:"tenant_id"`
    }
)

type (
    DeleteFirewallRuleReq{
        Platform string `form:"platform,optional" copier:"Platform"`
        firewall_rule_id  string `json:"firewall_rule_id,optional" copier:"firewall_rule_id"`
    }
    DeleteFirewallRuleResp{
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
)

type (
    ListFirewallRulesReq{
        Platform string `form:"platform,optional" copier:"Platform"`
        fields  string `json:"fields,optional" copier:"fields"`
    }
    ListFirewallRulesResp{
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
        firewall_rules  []Firewall_rules `json:"firewall_rules,optional" copier:"firewall_rules"`
    }
    Firewall_rules{
        action string `json:"action,optional" copier:"action"`
        description string `json:"description,optional" copier:"description"`
        destination_ip_address string `json:"destination_ip_address,optional" copier:"destination_ip_address"`
        destination_firewall_group_id string `json:"destination_firewall_group_id,optional" copier:"destination_firewall_group_id"`
        destination_port string `json:"destination_port,optional" copier:"destination_port"`
        enabled bool `json:"enabled,optional" copier:"enabled"`
        id string `json:"id,optional" copier:"id"`
        ip_version uint32 `json:"ip_version,optional" copier:"ip_version"`
        name string `json:"name,optional" copier:"name"`
        project_id string `json:"project_id,optional" copier:"project_id"`
        protocol string `json:"protocol,optional" copier:"protocol"`
        shared bool `json:"shared,optional" copier:"shared"`
        source_firewall_group_id string `json:"source_firewall_group_id,optional" copier:"source_firewall_group_id"`
        source_ip_address string `json:"source_ip_address,optional" copier:"source_ip_address"`
        source_port string `json:"source_port,optional" copier:"source_port"`
        tenant_id string `json:"tenant_id,optional" copier:"tenant_id"`
    }
)

type (
    ShowFirewallRuleDetailsReq{
        Platform string `form:"platform,optional" copier:"Platform"`
        firewall_rule_id  string `json:"firewall_rule_id,optional" copier:"firewall_rule_id"`
    }
    ShowFirewallRuleDetailsResp{
        firewall_rule  Firewall_rule `json:"firewall_rule,optional" copier:"firewall_rule"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
)

//Security Group
type (
    ListSecurityGroupsReq{
        Platform string `form:"platform,optional" copier:"Platform"`
        fields  string `json:"firewall_rule_id,optional" copier:"firewall_rule_id"`
    }
    ListSecurityGroupsResp{
        security_groups  Security_groups `json:"security_groups,optional" copier:"security_groups"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
    Security_groups {
        id string `json:"id,optional" copier:"id"`
        description string `json:"description,optional" copier:"description"`
        name string `json:"name,optional" copier:"name"`
        project_id string `json:"project_id,optional" copier:"project_id"`
        revision_number uint32 `json:"revision_number,optional" copier:"revision_number"`
        created_at int64 `json:"created_at,optional" copier:"created_at"`
        updated_at int64 `json:"updated_at,optional" copier:"updated_at"`
        tags  []string `json:"tags,optional" copier:"tags"`
        tenant_id string `json:"tenant_id,optional" copier:"tenant_id"`
        stateful bool `json:"stateful,optional" copier:"stateful"`
        shared bool `json:"shared,optional" copier:"shared"`
    }
)

type (
    CreateSecurityGroupReq{
        Platform string `form:"platform,optional" copier:"Platform"`
        firewall_rule_id  string `json:"firewall_rule_id,optional" copier:"firewall_rule_id"`
    }
    CreateSecurityGroupResp{
        security_group  Security_group `json:"security_group,optional" copier:"security_group"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
    Security_group{
        id string `json:"id,optional" copier:"id"`
        description string `json:"description,optional" copier:"description"`
        name string `json:"name,optional" copier:"name"`
        project_id string `json:"project_id,optional" copier:"project_id"`
        revision_number uint32 `json:"revision_number,optional" copier:"revision_number"`
        created_at int64 `json:"created_at,optional" copier:"created_at"`
        updated_at int64 `json:"updated_at,optional" copier:"updated_at"`
        tags  []string `json:"tags,optional" copier:"tags"`
        tenant_id string `json:"tenant_id,optional" copier:"tenant_id"`
        stateful bool `json:"stateful,optional" copier:"stateful"`
        shared bool `json:"shared,optional" copier:"shared"`
        security_group_rules []Security_group_rules `json:"security_group_rules,optional" copier:"security_group_rules"`
    }
    Security_group_rules{
        direction string `json:"direction,optional" copier:"direction"`
        ethertype string `json:"ethertype,optional" copier:"ethertype"`
        id string `json:"id,optional" copier:"id"`
        port_range_max int64 `json:"port_range_max,optional" copier:"port_range_max"`
        port_range_min int64 `json:"port_range_min,optional" copier:"port_range_min"`
        protocol string `json:"protocol,optional" copier:"protocol"`
        remote_group_id string `json:"remote_group_id,optional" copier:"remote_group_id"`
        remote_ip_prefix string `json:"remote_ip_prefix,optional" copier:"remote_ip_prefix"`
        security_group_id string `json:"security_group_id,optional" copier:"security_group_id"`
        project_id string `json:"project_id,optional" copier:"project_id"`
        created_at int64 `json:"created_at,optional" copier:"created_at"`
        updated_at int64 `json:"updated_at,optional" copier:"updated_at"`
        revision_number uint32 `json:"revision_number,optional" copier:"revision_number"`
        tags  []string `json:"tags,optional" copier:"tags"`
        tenant_id string `json:"tenant_id,optional" copier:"tenant_id"`
        stateful bool `json:"stateful,optional" copier:"stateful"`
        belongs_to_default_sg bool `json:"belongs_to_default_sg,optional" copier:"belongs_to_default_sg"`
    }
)

type(
    DeleteSecurityGroupReq{
        Platform string `form:"platform,optional" copier:"Platform"`
        security_group_id  string `json:"security_group_id,optional" copier:"security_group_id"`
    }
    DeleteSecurityGroupResp{
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
)

type(
    UpdateSecurityGroupReq{
        Platform string `form:"platform,optional" copier:"Platform"`
        security_group_id  string `json:"security_group_id,optional" copier:"security_group_id"`
    }
    UpdateSecurityGroupResp{
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
        security_group  Security_group `json:"security_group,optional" copier:"security_group"`

    }
)

type(
    ShowSecurityGroupReq{
        Platform string `form:"platform,optional" copier:"Platform"`
        security_group_id  string `json:"security_group_id,optional" copier:"security_group_id"`
        fields  string `json:"fields,optional" copier:"fields"`
        verbose  string `json:"verbose,optional" copier:"verbose"`
    }
    ShowSecurityGroupResp{
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
        security_group  Security_group `json:"security_group,optional" copier:"security_group"`
    }
)

//SecurityGroupRules
type(
    ListSecurityGroupRulesReq{
        Platform string `form:"platform,optional" copier:"Platform"`
    }
    ListSecurityGroupRulesResp{
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
        security_group_rules  Security_group_rules `json:"security_group_rules,optional" copier:"security_group_rules"`
    }
)

type(
    CreateSecurityGroupRuleReq{
        Platform string `json:"platform,optional" copier:"Platform"`
    }
    CreateSecurityGroupRuleResp{
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
        security_group_rule  Security_group_rule `json:"security_group_rule,optional" copier:"security_group_rule"`
    }
    Security_group_rule{
        direction string `json:"direction,optional" copier:"direction"`
        ethertype string `json:"ethertype,optional" copier:"ethertype"`
        id string `json:"id,optional" copier:"id"`
        port_range_max int64 `json:"port_range_max,optional" copier:"port_range_max"`
        port_range_min int64 `json:"port_range_min,optional" copier:"port_range_min"`
        protocol string `json:"protocol,optional" copier:"protocol"`
        remote_group_id string `json:"remote_group_id,optional" copier:"remote_group_id"`
        remote_ip_prefix string `json:"remote_ip_prefix,optional" copier:"remote_ip_prefix"`
        security_group_id string `json:"security_group_id,optional" copier:"security_group_id"`
        project_id string `json:"project_id,optional" copier:"project_id"`
        created_at int64 `json:"created_at,optional" copier:"created_at"`
        updated_at int64 `json:"updated_at,optional" copier:"updated_at"`
        revision_number uint32 `json:"revision_number,optional" copier:"revision_number"`
        tags  []string `json:"tags,optional" copier:"tags"`
        tenant_id string `json:"tenant_id,optional" copier:"tenant_id"`
        stateful bool `json:"stateful,optional" copier:"stateful"`
        belongs_to_default_sg bool `json:"belongs_to_default_sg,optional" copier:"belongs_to_default_sg"`
    }
)

type(
    ShowSecurityGroupRuleReq{
        Platform string `form:"platform,optional" copier:"Platform"`
        security_group_rule_id string `json:"security_group_rule_id,optional" copier:"security_group_rule_id"`
    }
    ShowSecurityGroupRuleResp{
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
        security_group_rule  Security_group_rule `json:"security_group_rule,optional" copier:"security_group_rule"`
    }
)

type(
    DeleteSecurityGroupRuleReq{
        Platform string `form:"platform,optional" copier:"Platform"`
        security_group_rule_id string `json:"security_group_rule_id,optional" copier:"security_group_rule_id"`
    }
    DeleteSecurityGroupRuleResp{
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
        security_group_rule  Security_group_rule `json:"security_group_rule,optional" copier:"security_group_rule"`
    }
)

/******************find Networks end*************************/

/******************find ListVolumesDetail start*************************/
type (
    ListVolumesDetailReq {
        Platform string `form:"platform,optional"`
    }
    ListVolumesDetailResp {
        VolumeDetail []VolumeDetail `json:"volumes" copier:"VolumeDetail"`
        Code int32 `json:"code,omitempty"`
        Msg string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
    }

    VolumeDetail {
        created_at string `json:"created_at" copier:"created_at"`
        id string `json:"id" copier:"id"`
        availability_zone string `json:"availability_zone" copier:"availability_zone"`
        encrypted bool `json:"encrypted" copier:"encrypted"`
        name string `json:"name" copier:"name"`
        size int32 `json:"size" copier:"size"`
        status string `json:"status" copier:"status"`
        tenant_id string `json:"tenant_id" copier:"tenant_id"`
        updated string `json:"Updated" copier:"updated"`
        user_id string `json:"User_id" copier:"user_id"`
        description string `json:"description" copier:"description"`
        multiattach bool `json:"multiattach" copier:"multiattach"`
        bootable bool `json:"bootable" copier:"bootable"`
        volume_type string `json:"volume_type" copier:"volume_type"`
        count int32 `json:"count" copier:"Count"`
        shared_targets bool `json:"shared_targets" copier:"shared_targets"`
        consumes_quota bool `json:"consumes_quota" copier:"consumes_quota"`
    }
)

type (
    DeleteVolumeReq {
        VolumeId string `form:"volume_id" copier:"VolumeId"`
        Cascade bool `json:"cascade" copier:"Cascade"`
        Force bool `json:"force" copier:"force"`
        Platform string `form:"platform,optional"`
    }
    DeleteVolumeResp {
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
)

type (
    CreateVolumeReq {
        Volume Volume `json:"volume" copier:"Volume"`
        Platform string `json:"platform,optional"`
    }
    CreateVolumeResp {
        Volume VolumeResp `json:"volume" copier:"Volume"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }

    Volume {
        Size int32 `json:"size" copier:"Size"`
        AvailabilityZone string `json:"availability_zone" copier:"AvailabilityZone"`
        Description string `json:"description" copier:"Description"`
        Name string `json:"name" copier:"Name"`
        VolumeType string `json:"volume_type" copier:"VolumeType"`
    }

    VolumeResp {
        CreatedAt string `json:"created_at" copier:"CreatedAt"`
        Id string `json:"id" copier:"Id"`
        AvailabilityZone string `json:"availability_zone" copier:"AvailabilityZone"`
        Encrypted bool `json:"encrypted" copier:"Encrypted"`
        Name string `json:"name" copier:"Name"`
        Size int32 `json:"size" copier:"Size"`
        Status string `json:"status" copier:"Status"`
        TenantId string `json:"tenant_id" copier:"TenantId"`
        Updated string `json:"updated" copier:"Updated"`
        UserId string `json:"user_id" copier:"UserId"`
        Description string `json:"description" copier:"Description"`
        Multiattach bool `json:"multiattach" copier:"Multiattach"`
        Bootable bool `json:"bootable" copier:"Bootable"`
        VolumeType string `json:"volume_type" copier:"VolumeType"`
        Count int32 `json:"count" copier:"Count"`
        SharedTargets bool `json:"shared_targets" copier:"SharedTargets"`
        ConsumesQuota bool `json:"consumes_quota" copier:"ConsumesQuota"`
    }
)
type (
    ListVolumeTypesReq {
        Platform string `form:"platform,optional"`
    }
    ListVolumeTypesResp {
        VolumeTypes []Volume_types `json:"volume_types" copier:"VolumeTypes"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
    Volume_types {
        Description string `json:"description" copier:"Description"`
        Id string `json:"id" copier:"Id"`
        IsPublic bool `json:"is_public" copier:"IsPublic"`
        Name string `json:"name" copier:"Name"`
        OsVolumeTypeAccessIsPublic bool `json:"os_volume_type_access_is_public" copier:"OsVolumeTypeAccessIsPublic"`
        QosSpecsId string `json:"qos_specs_id" copier:"QosSpecsId"`
        ExtraSpecs Extra_specs `json:"extra_specs" copier:"ExtraSpecs"`
    }
    Extra_specs {
        Capabilities string `json:"capabilities" copier:"Capabilities"`
    }
)

type(
    UpdateVolumeReq {
        Volume Volume `json:"volume" copier:"Volume"`
        VolumeId string `json:"volume_id" copier:"VolumeId"`
        Platform string `form:"platform,optional"`
    }
    UpdateVolumeResp {
        Volume Volume `json:"volume" copier:"Volume"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
)

type(
    GetVolumeDetailedByIdReq {
        VolumeId string `form:"volume_id" copier:"VolumeId"`
        Platform string `form:"platform,optional"`
    }
    GetVolumeDetailedByIdResp {
        Volume VolumeDetailed `json:"volume" copier:"Volume"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
    VolumeDetailed {
        CreatedAt string `json:"created_at" copier:"CreatedAt"`
        Id string `json:"id" copier:"Id"`
        AvailabilityZone string `json:"availability_zone" copier:"AvailabilityZone"`
        Encrypted bool `json:"encrypted" copier:"Encrypted"`
        Name string `json:"name" copier:"Name"`
        Size int32 `json:"size" copier:"Size"`
        Status string `json:"status" copier:"Status"`
        TenantId string `json:"tenant_id" copier:"TenantId"`
        Updated string `json:"updated" copier:"Updated"`
        UserId string `json:"user_id" copier:"UserId"`
        Description string `json:"description" copier:"Description"`
        Multiattach bool `json:"multiattach" copier:"Multiattach"`
        Bootable string `json:"bootable" copier:"Bootable"`
        VolumeType string `json:"volume_type" copier:"VolumeType"`
        Count int32 `json:"count" copier:"Count"`
        SharedTargets bool `json:"shared_targets" copier:"SharedTargets"`
        ConsumesQuota bool `json:"consumes_quota" copier:"ConsumesQuota"`
    }
)

type(
    CreateVolumeTypeReq {
        VolumeType VolumeType `json:"volume_type" copier:"VolumeType"`
        Platform string `json:"platform,optional"`
    }
    CreateVolumeTypeResp {
        VolumeType VolumeType `json:"volume_type" copier:"VolumeType"`
        Code int32 `json:"code,omitempty" copier:"Code"`
        Msg string `json:"msg,omitempty" copier:"Msg"`
        ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
    }
    VolumeType {
        Name string `json:"name" copier:"Name"`
        Description string `json:"description" copier:"Description"`
        ExtraSpecs ExtraSpecs `json:"extra_specs" copier:"ExtraSpecs"`
        Id string `json:"id" copier:"Id"`
        IsPublic bool `json:"is_public" copier:"IsPublic"`
    }
)

type(
     DeleteVolumeTypeReq {
         VolumeTypeId string `json:"volume_type_id" copier:"VolumeTypeId"`
         Platform string `form:"platform,optional"`
     }
     DeleteVolumeTypeResp {
         Code int32 `json:"code,omitempty" copier:"Code"`
         Msg string `json:"msg,omitempty" copier:"Msg"`
         ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
     }
)
type(
     ListVolumesReq {
         ProjectId   string `json:"project_id" copier:"ProjectId"`
         AllTenants  string `json:"all_tenants" copier:"AllTenants"`
         Sort        string `json:"sort" copier:"Sort"`
         Limit       int32 `json:"limit" copier:"Limit"`
         Offset      int32 `json:"offset" copier:"Offset"`
         Marker      string `json:"marker" copier:"Marker"`
         WithCount      bool `json:"with_count" copier:"WithCount"`
         CreatedAt      string `json:"created_at" copier:"CreatedAt"`
         ConsumesQuota  bool `json:"consumes_quota" copier:"ConsumesQuota"`
         UpdatedAt      string `json:"updated_at" copier:"UpdatedAt"`
         Platform string `form:"platform,optional"`
     }
     ListVolumesResp {
         Volumes []VolumesList `json:"volumes" copier:"Volumes"`
         Code int32 `json:"code,omitempty" copier:"Code"`
         Msg string `json:"msg,omitempty" copier:"Msg"`
         ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
     }
     VolumesList {
         Id   string `json:"id" copier:"Id"`
         Links   Links `json:"links" copier:"Links"`
         Name   string `json:"name" copier:"Name"`
     }
)

/******************find ListVolumesDetail end*************************/

type (
    ListFlavorsDetailReq {
        Platform string `form:"platform,optional"`
    }

    ListFlavorsDetailResp {
        Flavor []Flavors `json:"flavors" copier:"Flavor"`
        Code int32 `json:"code,omitempty"`
        Msg string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
    }
    Flavors {
        name string `json:"name" copier:"name"`
        description string `json:"description" copier:"description"`
        id string `json:"id" copier:"id"`
        disk int32 `json:"disk" copier:"disk"`
        ephemeral uint32 `json:"ephemeral" copier:"ephemeral"`
        original_name string `json:"original_name" copier:"original_name"`
        ram int32 `json:"ram" copier:"ram"`
        swap int32 `json:"swap" copier:"swap"`
        vcpus int32 `json:"vcpus" copier:"vcpus"`
        rxtx_factor float32 `json:"rxtx_factor" copier:"rxtx_factor"`
        os_flavor_access_is_public bool `json:"os_flavor_access_is_public" copier:"os_flavor_access_is_public"`
    }
)

/******************Bare Metal start*************************/
type(
    ListNodesReq {
        Platform string `form:"platform,optional"`
        Limit  int64 `json:"limit" copier:"Limit"`
        Marker string `json:"marker" copier:"Marker"`
        SortDir string `json:"sort_dir" copier:"SortDir"`
        SortKey string `json:"sort_key" copier:"SortKey"`
        InstanceUuid string `json:"instance_uuid" copier:"InstanceUuid"`
        Maintenance bool `json:"maintenance" copier:"Maintenance"`
        Associated bool `json:"associated" copier:"Associated"`
        ProvisionState string `json:"provision_state" copier:"ProvisionState"`
        Sharded bool `json:"sharded" copier:"Sharded"`
        Driver string `json:"driver" copier:"Driver"`
        ResourceClass string `json:"resource_class" copier:"ResourceClass"`
        ConductorGroup string `json:"conductor_group" copier:"ConductorGroup"`
        Conductor string `json:"conductor" copier:"Conductor"`
        Fault string `json:"fault" copier:"Fault"`
        Owner string `json:"owner" copier:"Owner"`
        Lessee string `json:"lessee" copier:"Lessee"`
        Shard  []string `json:"shard" copier:"Shard"`
        Detail  bool  `json:"detail" copier:"Detail"`
        ParentNode  string  `json:"parent_node" copier:"ParentNode"`
        IncludeChildren  string  `json:"include_children" copier:"IncludeChildren"`
    }

    ListNodesResp {
        Nodes []Nodes `json:"nodes" copier:"Nodes"`
        Code int32 `json:"code,omitempty"`
        Msg string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
    }
    Nodes {
        InstanceUuid  string  `json:"instance_uuid" copier:"InstanceUuid"`
        Links  []Links  `json:"links" copier:"Links"`
        Maintenance  bool  `json:"maintenance" copier:"Maintenance"`
        Name  string  `json:"name" copier:"Name"`
        PowerState  string  `json:"power_state" copier:"PowerState"`
        ProvisionState  string  `json:"provision_state" copier:"ProvisionState"`
        Uuid  string  `json:"uuid" copier:"Uuid"`
    }
)
    type(
    CreateNodeReq {
        Platform string `json:"platform,optional"`
        Name  string  `json:"name" copier:"Name"`
        Driver  string  `json:"driver" copier:"Driver"`
        DriverInfo  DriverInfo  `json:"driver_info" copier:"DriverInfo"`
        ResourceClass  string  `json:"resource_class" copier:"ResourceClass"`
        BootInterface  string  `json:"boot_interface" copier:"BootInterface"`
        ConductorGroup  string  `json:"conductor_group" copier:"ConductorGroup"`
        ConsoleInterface  string  `json:"console_interface" copier:"ConsoleInterface"`
        DeployInterface  string  `json:"deploy_interface" copier:"DeployInterface"`
        InspectInterface  string  `json:"inspect_interface" copier:"InspectInterface"`
        ManagementInterface  string  `json:"inspect_interface" copier:"ManagementInterface"`
        NetworkInterface  string  `json:"network_interface" copier:"NetworkInterface"`
        RescueInterface  string  `json:"rescue_interface" copier:"RescueInterface"`
        StorageInterface  string  `json:"storage_interface" copier:"StorageInterface"`
        Uuid  string  `json:"uuid" copier:"Uuid"`
        VendorInterface  string  `json:"vendor_interface" copier:"VendorInterface"`
        Owner  string  `json:"owner" copier:"Owner"`
        Description  string  `json:"description" copier:"Description"`
        Lessee  string  `json:"lessee" copier:"Lessee"`
        Shard   string  `json:"shard" copier:"Shard"`
        Properties   Properties  `json:"properties" copier:"Properties"`
        AutomatedClean  bool  `json:"automated_clean" copier:"AutomatedClean"`
        BiosInterface  string  `json:"bios_interface" copier:"BiosInterface"`
        ChassisUuid  string  `json:"chassis_uuid" copier:"ChassisUuid"`
        InstanceUuid  string  `json:"instance_uuid" copier:"InstanceUuid"`
        Maintenance  bool  `json:"maintenance" copier:"Maintenance"`
        MaintenanceReason  bool  `json:"maintenance_reason" copier:"MaintenanceReason"`
        NetworkData   NetworkData  `json:"network_data" copier:"NetworkData"`
        Protected  bool  `json:"protected" copier:"Protected"`
        ProtectedReason  string  `json:"protected_reason" copier:"ProtectedReason"`
        Retired  bool  `json:"retired" copier:"Retired"`
        RetiredReason  string  `json:"retired_reason" copier:"RetiredReason"`
    }
    DriverInfo{

    }
    Properties{

    }
    NetworkData{

    }
    CreateNodeResp {
        AllocationUuid  string  `json:"allocation_uuid" copier:"AllocationUuid"`
        Name  string  `json:"name" copier:"name"`
        PowerState  string  `json:"power_state" copier:"PowerState"`
        TargetPowerState  string  `json:"target_power_state" copier:"TargetPowerState"`
        ProvisionState  string  `json:"provision_state" copier:"ProvisionState"`
        TargetProvisionState  string  `json:"target_provision_state" copier:"TargetProvisionState"`
        Maintenance  bool  `json:"maintenance" copier:"Maintenance"`
        MaintenanceReason  string  `json:"maintenance_reason" copier:"MaintenanceReason"`
        Fault  string  `json:"fault" copier:"Fault"`
        LastError  string  `json:"last_error" copier:"LastError"`
        Reservation  string  `json:"reservation" copier:"Reservation"`
        Driver  string  `json:"driver" copier:"Driver"`
        DriverInfo  Driver_info  `json:"driver_info" copier:"DriverInfo"`
        DriverInternalInfo   DriverInternalInfo  `json:"driver_internal_info" copier:"DriverInternalInfo"`
        Properties   Properties  `json:"properties" copier:"Properties"`
        InstanceInfo   InstanceInfo  `json:"instance_info" copier:"InstanceInfo"`
        InstanceUuid  string  `json:"instance_uuid" copier:"InstanceUuid"`
        ChassisUuid  string  `json:"chassis_uuid" copier:"ChassisUuid"`
        Extra   Extra  `json:"extra" copier:"Extra"`
        ConsoleEnabled  bool  `json:"console_enabled" copier:"ConsoleEnabled"`
        RaidConfig   RaidConfig  `json:"raid_config" copier:"RaidConfig"`
        TargetRaidConfig TargetRaidConfig `json:"target_raid_config" copier:"TargetRaidConfig"`
        CleanStep CleanStep `json:"clean_step" copier:"CleanStep"`
        DeployStep DeployStep `json:"clean_step" copier:"DeployStep"`
        Links []Links `json:"links" copier:"Links"`
        Ports []Ports `json:"ports" copier:"Ports"`
        Portgroups []Portgroups `json:"portgroups" copier:"Portgroups"`
        States []States `json:"states" copier:"States"`
        ResourceClass  string  `json:"resource_class" copier:"ResourceClass"`
        BootInterface  string  `json:"boot_interface" copier:"BootInterface"`
        ConsoleInterface  string  `json:"console_interface" copier:"ConsoleInterface"`
        DeployInterface  string  `json:"deploy_interface" copier:"DeployInterface"`
        ConductorGroup  string  `json:"conductor_group" copier:"ConductorGroup"`
        InspectInterface  string  `json:"inspect_interface" copier:"InspectInterface"`
        ManagementInterface  string  `json:"management_interface" copier:"ManagementInterface"`
        NetworkInterface  string  `json:"network_interface" copier:"NetworkInterface"`
        PowerInterface  string  `json:"power_interface" copier:"PowerInterface"`
        RaidInterface  string  `json:"raid_interface" copier:"RaidInterface"`
        RescueInterface  string  `json:"rescue_interface" copier:"RescueInterface"`
        StorageInterface  string  `json:"storage_interface" copier:"StorageInterface"`
        Traits  []string  `json:"traits" copier:"Traits"`
        Volume  []VolumeNode  `json:"volume" copier:"Volume"`
        Protected  bool  `json:"protected" copier:"Protected"`
        ProtectedReason  string  `json:"protected_reason" copier:"ProtectedReason"`
        Conductor  string  `json:"conductor" copier:"Conductor"`
        Owner  string  `json:"owner" copier:"Owner"`
        Lessee  string  `json:"lessee" copier:"Lessee"`
        Shard   string  `json:"shard" copier:"Shard"`
        Description   string  `json:"description" copier:"Description"`
        AutomatedClean   string  `json:"automated_clean" copier:"AutomatedClean"`
        BiosInterface   string  `json:"bios_interface" copier:"BiosInterface"`
        NetworkData NetworkData `json:"network_data" copier:"NetworkData"`
        Retired   bool  `json:"retired" copier:"Retired"`
        RetiredReason   string  `json:"retired_reason" copier:"RetiredReason"`
        CreatedAt       string  `json:"created_at" copier:"CreatedAt"`
        InspectionFinishedAt       string  `json:"inspection_finished_at" copier:"InspectionFinishedAt"`
        InspectionStartedAt       string  `json:"inspection_started_at" copier:"InspectionStartedAt"`
        UpdatedAt       string  `json:"updated_at" copier:"UpdatedAt"`
        uuid             string  `json:"uuid" copier:"uuid"`
        ProvisionUpdatedAt     string  `json:"provision_updated_at" copier:"ProvisionUpdatedAt"`
        Code int32 `json:"code,omitempty"`
        Msg string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
    }
    Driver_info {
        ipmi_password     string  `json:"ipmi_password" copier:"ipmi_password"`
        ipmi_username     string  `json:"ipmi_username" copier:"ipmi_username"`
    }
    DriverInternalInfo {

    }
    InstanceInfo {

    }
    Extra{

    }
    RaidConfig {

    }
    TargetRaidConfig{

    }
    CleanStep{

    }
    DeployStep{

    }
    Ports{
        href     string  `json:"href" copier:"href"`
        rel     string  `json:"rel" copier:"rel"`
    }
    Portgroups{
        href     string  `json:"href" copier:"href"`
        rel     string  `json:"rel" copier:"rel"`
    }
    States {
        href     string  `json:"href" copier:"href"`
        rel     string  `json:"rel" copier:"rel"`
    }
    VolumeNode {
        href     string  `json:"href" copier:"href"`
        rel     string  `json:"rel" copier:"rel"`
    }
    )

type(
    DeleteNodeReq{
        Platform      string `json:"platform,optional"`
        NodeIdent     string  `json:"node_ident" copier:"NodeIdent"`
    }
    DeleteNodeResp{
        Code int32 `json:"code,omitempty"`
        Msg string `json:"msg,omitempty"`
        ErrorMsg string `json:"errorMsg,omitempty"`
    }
)
type(
   ShowNodeDetailsReq{
       NodeIdent     string  `json:"node_ident" copier:"NodeIdent"`
       Fields     []Fields  `json:"fields" copier:"Fields"`
       Platform   string `json:"platform,optional"`
   }
   Fields {

   }
   ShowNodeDetailsResp {
       AllocationUuid  string  `json:"allocation_uuid" copier:"AllocationUuid"`
       Name  string  `json:"name" copier:"name"`
       PowerState  string  `json:"power_state" copier:"PowerState"`
       TargetPowerState  string  `json:"target_power_state" copier:"TargetPowerState"`
       ProvisionState  string  `json:"provision_state" copier:"ProvisionState"`
       TargetProvisionState  string  `json:"target_provision_state" copier:"TargetProvisionState"`
       Maintenance  bool  `json:"maintenance" copier:"Maintenance"`
       MaintenanceReason  string  `json:"maintenance_reason" copier:"MaintenanceReason"`
       Fault  string  `json:"fault" copier:"Fault"`
       LastError  string  `json:"last_error" copier:"LastError"`
       Reservation  string  `json:"reservation" copier:"Reservation"`
       Driver  string  `json:"driver" copier:"Driver"`
       DriverInfo  Driver_info  `json:"driver_info" copier:"DriverInfo"`
       DriverInternalInfo   DriverInternalInfo  `json:"driver_internal_info" copier:"DriverInternalInfo"`
       Properties   Properties  `json:"properties" copier:"Properties"`
       InstanceInfo   InstanceInfo  `json:"instance_info" copier:"InstanceInfo"`
       InstanceUuid  string  `json:"instance_uuid" copier:"InstanceUuid"`
       ChassisUuid  string  `json:"chassis_uuid" copier:"ChassisUuid"`
       Extra   Extra  `json:"extra" copier:"Extra"`
       ConsoleEnabled  bool  `json:"console_enabled" copier:"ConsoleEnabled"`
       RaidConfig   RaidConfig  `json:"raid_config" copier:"RaidConfig"`
       TargetRaidConfig TargetRaidConfig `json:"target_raid_config" copier:"TargetRaidConfig"`
       CleanStep CleanStep `json:"clean_step" copier:"CleanStep"`
       DeployStep DeployStep `json:"clean_step" copier:"DeployStep"`
       Links []Links `json:"links" copier:"Links"`
       Ports []Ports `json:"ports" copier:"Ports"`
       Portgroups []Portgroups `json:"portgroups" copier:"Portgroups"`
       States []States `json:"states" copier:"States"`
       ResourceClass  string  `json:"resource_class" copier:"ResourceClass"`
       BootInterface  string  `json:"boot_interface" copier:"BootInterface"`
       ConsoleInterface  string  `json:"console_interface" copier:"ConsoleInterface"`
       DeployInterface  string  `json:"deploy_interface" copier:"DeployInterface"`
       ConductorGroup  string  `json:"conductor_group" copier:"ConductorGroup"`
       InspectInterface  string  `json:"inspect_interface" copier:"InspectInterface"`
       ManagementInterface  string  `json:"management_interface" copier:"ManagementInterface"`
       NetworkInterface  string  `json:"network_interface" copier:"NetworkInterface"`
       PowerInterface  string  `json:"power_interface" copier:"PowerInterface"`
       RaidInterface  string  `json:"raid_interface" copier:"RaidInterface"`
       RescueInterface  string  `json:"rescue_interface" copier:"RescueInterface"`
       StorageInterface  string  `json:"storage_interface" copier:"StorageInterface"`
       Traits  []string  `json:"traits" copier:"Traits"`
       Volume  []VolumeNode  `json:"volume" copier:"Volume"`
       Protected  bool  `json:"protected" copier:"Protected"`
       ProtectedReason  string  `json:"protected_reason" copier:"ProtectedReason"`
       Conductor  string  `json:"conductor" copier:"Conductor"`
       Owner  string  `json:"owner" copier:"Owner"`
       Lessee  string  `json:"lessee" copier:"Lessee"`
       Shard   string  `json:"shard" copier:"Shard"`
       Description   string  `json:"description" copier:"Description"`
       AutomatedClean   string  `json:"automated_clean" copier:"AutomatedClean"`
       BiosInterface   string  `json:"bios_interface" copier:"BiosInterface"`
       NetworkData NetworkData `json:"network_data" copier:"NetworkData"`
       Retired   bool  `json:"retired" copier:"Retired"`
       RetiredReason   string  `json:"retired_reason" copier:"RetiredReason"`
       CreatedAt       string  `json:"created_at" copier:"CreatedAt"`
       InspectionFinishedAt       string  `json:"inspection_finished_at" copier:"InspectionFinishedAt"`
       InspectionStartedAt       string  `json:"inspection_started_at" copier:"InspectionStartedAt"`
       UpdatedAt       string  `json:"updated_at" copier:"UpdatedAt"`
       uuid             string  `json:"uuid" copier:"uuid"`
       ProvisionUpdatedAt     string  `json:"provision_updated_at" copier:"ProvisionUpdatedAt"`
       Code int32 `json:"code,omitempty"`
       Msg string `json:"msg,omitempty"`
       ErrorMsg string `json:"errorMsg,omitempty"`
   }
)
/******************Bare Metal end  *************************/