github.com/cloudwan/edgelq-sdk@v1.15.4/devices/proto/v1alpha2/device.proto (about) 1 syntax = "proto3"; 2 3 package ntt.devices.v1alpha2; 4 5 import "edgelq-sdk/iam/proto/v1alpha2/common.proto"; 6 import "google/api/resource.proto"; 7 import "google/protobuf/duration.proto"; 8 import "google/protobuf/field_mask.proto"; 9 import "google/protobuf/timestamp.proto"; 10 import "google/type/latlng.proto"; 11 import "goten-sdk/types/meta.proto"; 12 13 option go_package = "github.com/cloudwan/edgelq-sdk/devices/resources/v1alpha2/device;device"; 14 option java_multiple_files = true; 15 option java_outer_classname = "DeviceProto"; 16 option java_package = "com.ntt.devices.pb.v1alpha2"; 17 18 // Device Resource 19 message Device { 20 option (google.api.resource) = { 21 type : "devices.edgelq.com/Device" 22 pattern : "projects/{project}/regions/{region}/devices/{device}" 23 }; 24 25 // Name of Device 26 // When creating a new instance, this field is optional and if not provided, 27 // it will be generated automatically. Last ID segment must conform to the 28 // following regex: [a-z][a-z0-9\-]{0,28}[a-z0-9] 29 string name = 1; 30 31 // Metadata of Device 32 goten.types.Meta metadata = 2; 33 34 // Spec holds the expected state of the Device, meaning configurations. 35 Spec spec = 3; 36 37 // Status of the Device reported from the actual device. 38 Status status = 4; 39 40 PublicListingSpec public_listing_spec = 5; 41 42 // Display name for the device 43 string display_name = 6; 44 45 message Spec { 46 // The associated service account to the Device. 47 // The agents in the device uses a key from this service account 48 // when they issue any requests to our endpoints for authoroization and 49 // authentication. `ProvisionServiceAccountToDevice` creates a new service 50 // account and a key for the Device and asign the account to this fileld. If 51 // you change the value of this field, the existing device would lose the 52 // access to the resources in our services, that means you can revoke the 53 // permissions from the device. You can manually set an empty value to do 54 // so, or call `RemoveServiceAccountFromDevice`. 55 string service_account = 1; 56 57 // The expected OS version in string (e.g. 1.0.2). 58 // The device will automatically download the OS image and upgrade itself 59 // with it. You can stack the OS upgrade progress in the Condition named 60 // `OSReady` in Status.Conditions. 61 string os_version = 2; 62 63 NetplanConfig netplan_config = 11; 64 65 NetworkConfigMode netplan_api_config_mode = 12; 66 67 // The URL is dynamically constructed once the device is created or updated. 68 // The URL will be based on the device hardware information 69 // URL format: base_url/dedicated_path/iso_version/architecture/os_type 70 string os_image_url = 5; 71 72 SSHConfig ssh_config = 6; 73 74 AttestationConfig attestation_config = 7; 75 76 // Disables the daemon on the device for device auto discovery on the 77 // network. When it's enabled, avahi-daemon is launched on the device which 78 // listens at UDP 5353. This daemon is useful to locate the device that 79 // acquires an IP address with DHCP. 80 bool disable_device_discovery = 8; 81 82 LoggingConfig logging_config = 9; 83 84 ProxyConfig proxy_config = 10; 85 86 Location location = 13; 87 88 message NetworkingConfig { 89 int32 version = 1; 90 91 string renderer = 9; 92 93 map<string, EthOpts> ethernets = 10; 94 95 map<string, WifiOpts> wifis = 11; 96 97 map<string, BridgesOpts> bridges = 12; 98 99 map<string, BondsOpts> bonds = 13; 100 101 map<string, TunnelsOpts> tunnels = 14; 102 103 map<string, VlansOpts> vlans = 15; 104 105 map<string, ModemOpts> modems = 16; 106 107 message CommonOpts { 108 message DHCPOverrides { 109 bool use_dns = 1 [ json_name = "use-dns" ]; 110 111 bool use_ntp = 2 [ json_name = "use-ntp" ]; 112 113 bool send_hostname = 3 [ json_name = "send-hostname" ]; 114 115 bool use_hostname = 4 [ json_name = "use-hostname" ]; 116 117 bool use_mtu = 5 [ json_name = "use-mtu" ]; 118 119 string hostname = 6; 120 121 bool use_routes = 7 [ json_name = "use-routes" ]; 122 123 int32 route_metric = 9 [ json_name = "route-metric" ]; 124 125 reserved 8; 126 } 127 128 message Nameservers { 129 repeated string search = 1; 130 131 repeated string addresses = 2; 132 } 133 134 message Routes { 135 string from = 1; 136 137 string to = 2; 138 139 string via = 3; 140 141 bool on_link = 4 [ json_name = "on-link" ]; 142 143 int32 metric = 5; 144 145 string type = 6; 146 147 string scope = 7; 148 149 int32 table = 8; 150 } 151 152 message RoutingPolicy { 153 string from = 1; 154 155 string to = 2; 156 157 int32 table = 3; 158 159 int32 priority = 4; 160 161 int32 mark = 5; 162 163 int32 type_of_service = 6 [ json_name = "type-of-service" ]; 164 } 165 166 message Auth { 167 string key_management = 1 [ json_name = "key-management" ]; 168 169 string password = 2; 170 171 string method = 3; 172 173 string identity = 4; 174 175 string anonymous_identity = 5 [ json_name = "anonymous-identity" ]; 176 177 string ca_certificate = 6 [ json_name = "ca-certificate" ]; 178 179 string client_certificate = 7 [ json_name = "client-certificate" ]; 180 181 string client_key = 8 [ json_name = "client-key" ]; 182 183 string client_key_password = 9 [ json_name = "client-key-password" ]; 184 185 string phase2_auth = 10 [ json_name = "phase2-auth" ]; 186 } 187 } 188 189 message EthOpts { 190 Match match = 1; 191 192 string set_name = 2 [ json_name = "set-name" ]; 193 194 bool wakeonlan = 3; 195 196 string renderer = 6; 197 198 bool dhcp4 = 7; 199 200 bool dhcp6 = 8; 201 202 bool ipv6_privacy = 9 [ json_name = "ipv6-privacy" ]; 203 204 repeated string link_local = 10 [ json_name = "link-local" ]; 205 206 bool critical = 11; 207 208 string dhcp_identifier = 12 [ json_name = "dhcp-identifier" ]; 209 210 CommonOpts.DHCPOverrides dhcp4_overrides = 13 211 [ json_name = "dhcp4-overrides" ]; 212 213 CommonOpts.DHCPOverrides dhcp6_overrides = 14 214 [ json_name = "dhcp6-overrides" ]; 215 216 bool accept_ra = 15; 217 218 repeated string addresses = 16; 219 220 CommonOpts.Nameservers nameservers = 17; 221 222 string macaddress = 18; 223 224 int32 mtu = 19; 225 226 bool optional = 20; 227 228 repeated string optional_addresses = 21 229 [ json_name = "optional-addresses" ]; 230 231 repeated CommonOpts.Routes routes = 22; 232 233 CommonOpts.RoutingPolicy routing_policy = 23 234 [ json_name = "routing-policy" ]; 235 236 CommonOpts.Auth auth = 24; 237 238 // Deprecated 239 string gateway4 = 25; 240 241 // Deprecated 242 string gateway6 = 26; 243 244 message Match { 245 string name = 1; 246 247 string macaddress = 2; 248 249 string driver = 3; 250 } 251 252 reserved 4, 5; 253 } 254 255 message WifiOpts { 256 Match match = 1; 257 258 string set_name = 2 [ json_name = "set-name" ]; 259 260 bool wakeonlan = 3; 261 262 map<string, AccessPoint> access_points = 5 263 [ json_name = "access-points" ]; 264 265 // This enables WakeOnWLan on supported devices. Not all drivers support 266 // all options. May be any combination of any, disconnect, magic_pkt, 267 // gtk_rekey_failure, eap_identity_req, four_way_handshake, 268 // rfkill_release or tcp (NetworkManager only). Or the exclusive default 269 // flag (the default). 270 repeated string wakeonwlan = 28; 271 272 // This can be used to define the radio’s regulatory domain, to make use 273 // of additional WiFi channels outside the “world domain”. Takes an ISO 274 // / IEC 3166 country code (like GB) or 00 to reset to the “world 275 // domain” 276 string regulatory_domain = 29 [ json_name = "regulatory-domain" ]; 277 278 string renderer = 7; 279 280 bool dhcp4 = 8; 281 282 bool dhcp6 = 9; 283 284 bool ipv6_privacy = 10 [ json_name = "ipv6-privacy" ]; 285 286 repeated string link_local = 11 [ json_name = "link-local" ]; 287 288 bool critical = 12; 289 290 string dhcp_identifier = 13 [ json_name = "dhcp-identifier" ]; 291 292 CommonOpts.DHCPOverrides dhcp4_overrides = 14 293 [ json_name = "dhcp4-overrides" ]; 294 295 CommonOpts.DHCPOverrides dhcp6_overrides = 15 296 [ json_name = "dhcp6-overrides" ]; 297 298 bool accept_ra = 16; 299 300 repeated string addresses = 17; 301 302 CommonOpts.Nameservers nameservers = 18; 303 304 string macaddress = 19; 305 306 int32 mtu = 20; 307 308 bool optional = 21; 309 310 repeated string optional_addresses = 22 311 [ json_name = "optional-addresses" ]; 312 313 repeated CommonOpts.Routes routes = 23; 314 315 CommonOpts.RoutingPolicy routing_policy = 24 316 [ json_name = "routing-policy" ]; 317 318 CommonOpts.Auth auth = 25; 319 320 // Deprecated 321 string gateway4 = 26; 322 323 // Deprecated 324 string gateway6 = 27; 325 326 message Match { 327 string name = 1; 328 329 string macaddress = 2; 330 331 string driver = 3; 332 } 333 334 message AccessPoint { 335 // Setting password here is equivalent to using auth with 336 // key-management: psk 337 string password = 2; 338 339 string mode = 3; 340 341 string bssid = 4; 342 343 string band = 5; 344 345 string channel = 6; 346 347 string hidden = 7; 348 349 CommonOpts.Auth auth = 8; 350 351 reserved 1; 352 } 353 354 reserved 4, 6; 355 } 356 357 message BridgesOpts { 358 repeated string interfaces = 2; 359 360 Parameters parameters = 3; 361 362 string renderer = 5; 363 364 bool dhcp4 = 6; 365 366 bool dhcp6 = 7; 367 368 bool ipv6_privacy = 8 [ json_name = "ipv6-privacy" ]; 369 370 repeated string link_local = 9 [ json_name = "link-local" ]; 371 372 bool critical = 10; 373 374 string dhcp_identifier = 11 [ json_name = "dhcp-identifier" ]; 375 376 CommonOpts.DHCPOverrides dhcp4_overrides = 12 377 [ json_name = "dhcp4-overrides" ]; 378 379 CommonOpts.DHCPOverrides dhcp6_overrides = 13 380 [ json_name = "dhcp6-overrides" ]; 381 382 bool accept_ra = 14; 383 384 repeated string addresses = 15; 385 386 CommonOpts.Nameservers nameservers = 16; 387 388 string macaddress = 17; 389 390 int32 mtu = 18; 391 392 bool optional = 19; 393 394 repeated string optional_addresses = 20 395 [ json_name = "optional-addresses" ]; 396 397 repeated CommonOpts.Routes routes = 21; 398 399 CommonOpts.RoutingPolicy routing_policy = 22 400 [ json_name = "routing-policy" ]; 401 402 CommonOpts.Auth auth = 23; 403 404 // Deprecated 405 string gateway4 = 24; 406 407 // Deprecated 408 string gateway6 = 25; 409 410 message Parameters { 411 int32 ageing_time = 1 [ json_name = "ageing-time" ]; 412 413 int32 priority = 2; 414 415 int32 port_priority = 3 [ json_name = "port-priority" ]; 416 417 int32 forward_delay = 4 [ json_name = "forward-delay" ]; 418 419 int32 hello_time = 5 [ json_name = "hello-time" ]; 420 421 int32 max_age = 6 [ json_name = "max-age" ]; 422 423 int32 path_cost = 7 [ json_name = "path-cost" ]; 424 425 bool stp = 8; 426 } 427 428 reserved 1, 4; 429 } 430 431 message BondsOpts { 432 repeated string interfaces = 2; 433 434 Parameters parameters = 3; 435 436 string renderer = 5; 437 438 bool dhcp4 = 6; 439 440 bool dhcp6 = 7; 441 442 bool ipv6_privacy = 8 [ json_name = "ipv6-privacy" ]; 443 444 repeated string link_local = 9 [ json_name = "link-local" ]; 445 446 bool critical = 10; 447 448 string dhcp_identifier = 11 [ json_name = "dhcp-identifier" ]; 449 450 CommonOpts.DHCPOverrides dhcp4_overrides = 12 451 [ json_name = "dhcp4-overrides" ]; 452 453 CommonOpts.DHCPOverrides dhcp6_overrides = 13 454 [ json_name = "dhcp6-overrides" ]; 455 456 bool accept_ra = 14; 457 458 repeated string addresses = 15; 459 460 CommonOpts.Nameservers nameservers = 16; 461 462 string macaddress = 17; 463 464 int32 mtu = 18; 465 466 bool optional = 19; 467 468 repeated string optional_addresses = 20 469 [ json_name = "optional-addresses" ]; 470 471 repeated CommonOpts.Routes routes = 21; 472 473 CommonOpts.RoutingPolicy routing_policy = 22 474 [ json_name = "routing-policy" ]; 475 476 CommonOpts.Auth auth = 23; 477 478 // Deprecated 479 string gateway4 = 24; 480 481 // Deprecated 482 string gateway6 = 25; 483 484 message Parameters { 485 string mode = 1; 486 487 int32 lacp_rate = 2 [ json_name = "lacp-rate" ]; 488 489 int32 mii_monitor_interval = 3 [ json_name = "mii-monitor-interval" ]; 490 491 int32 min_links = 4 [ json_name = "min-links" ]; 492 493 int32 transmit_hash_policy = 5 [ json_name = "transmit-hash-policy" ]; 494 495 int32 ad_select = 6 [ json_name = "ad-select" ]; 496 497 int32 all_slaves_active = 7 [ json_name = "all-slaves-active" ]; 498 499 bool arp_ip_targets = 8 [ json_name = "arp-ip-targets" ]; 500 501 string arp_validate = 9 [ json_name = "arp-validate" ]; 502 503 string arp_all_targets = 10 [ json_name = "arp-all-targets" ]; 504 505 string up_delay = 11 [ json_name = "up-delay" ]; 506 507 string fail_over_mac_policy = 12 508 [ json_name = "fail-over-mac-policy" ]; 509 510 int32 gratuitous_arp = 13 [ json_name = "gratuitous-arp" ]; 511 512 string packets_per_slave = 14 [ json_name = "packets-per-slave" ]; 513 514 string primary_reselect_policy = 15 515 [ json_name = "primary-reselect-policy" ]; 516 517 string resend_igmp = 16 [ json_name = "resend-igmp" ]; 518 519 string learn_packet_interval = 17 520 [ json_name = "learn-packet-interval" ]; 521 522 string primary = 18; 523 } 524 525 reserved 1, 4; 526 } 527 528 message TunnelsOpts { 529 string mode = 2; 530 531 string local = 3; 532 533 string remote = 4; 534 535 int32 key = 5; 536 537 string renderer = 7; 538 539 bool dhcp4 = 8; 540 541 bool dhcp6 = 9; 542 543 bool ipv6_privacy = 10 [ json_name = "ipv6-privacy" ]; 544 545 repeated string link_local = 11 [ json_name = "link-local" ]; 546 547 bool critical = 12; 548 549 string dhcp_identifier = 13 [ json_name = "dhcp-identifier" ]; 550 551 CommonOpts.DHCPOverrides dhcp4_overrides = 14 552 [ json_name = "dhcp4-overrides" ]; 553 554 CommonOpts.DHCPOverrides dhcp6_overrides = 15 555 [ json_name = "dhcp6-overrides" ]; 556 557 bool accept_ra = 16; 558 559 repeated string addresses = 17; 560 561 CommonOpts.Nameservers nameservers = 18; 562 563 string macaddress = 19; 564 565 int32 mtu = 20; 566 567 bool optional = 21; 568 569 repeated string optional_addresses = 22 570 [ json_name = "optional-addresses" ]; 571 572 repeated CommonOpts.Routes routes = 23; 573 574 CommonOpts.RoutingPolicy routing_policy = 24 575 [ json_name = "routing-policy" ]; 576 577 CommonOpts.Auth auth = 25; 578 579 // Deprecated 580 string gateway4 = 26; 581 582 // Deprecated 583 string gateway6 = 27; 584 585 message Key { 586 int32 input = 1; 587 588 int32 output = 2; 589 } 590 591 reserved 1, 6; 592 } 593 594 message VlansOpts { 595 int32 id = 2; 596 597 string link = 3; 598 599 string renderer = 5; 600 601 bool dhcp4 = 6; 602 603 bool dhcp6 = 7; 604 605 bool ipv6_privacy = 8 [ json_name = "ipv6-privacy" ]; 606 607 repeated string link_local = 9 [ json_name = "link-local" ]; 608 609 bool critical = 10; 610 611 string dhcp_identifier = 11 [ json_name = "dhcp-identifier" ]; 612 613 CommonOpts.DHCPOverrides dhcp4_overrides = 12 614 [ json_name = "dhcp4-overrides" ]; 615 616 CommonOpts.DHCPOverrides dhcp6_overrides = 13 617 [ json_name = "dhcp6-overrides" ]; 618 619 bool accept_ra = 14; 620 621 repeated string addresses = 15; 622 623 CommonOpts.Nameservers nameservers = 16; 624 625 string macaddress = 17; 626 627 int32 mtu = 18; 628 629 bool optional = 19; 630 631 repeated string optional_addresses = 20 632 [ json_name = "optional-addresses" ]; 633 634 repeated CommonOpts.Routes routes = 21; 635 636 CommonOpts.RoutingPolicy routing_policy = 22 637 [ json_name = "routing-policy" ]; 638 639 CommonOpts.Auth auth = 23; 640 641 // Deprecated 642 string gateway4 = 24; 643 644 // Deprecated 645 string gateway6 = 25; 646 647 reserved 1, 4; 648 } 649 650 message ModemOpts { 651 string apn = 1; 652 653 string username = 2; 654 655 string password = 3; 656 657 string number = 4; 658 659 string network_id = 5 [ json_name = "network-id" ]; 660 661 string device_id = 6 [ json_name = "device-id" ]; 662 663 string pin = 7; 664 665 string sim_id = 8 [ json_name = "sim-id" ]; 666 667 string sim_operator_id = 9 [ json_name = "sim-operator-id" ]; 668 669 bool auto_config = 11 [ json_name = "auto-config" ]; 670 671 string renderer = 12; 672 673 bool dhcp4 = 13; 674 675 bool dhcp6 = 14; 676 677 bool ipv6_privacy = 15 [ json_name = "ipv6-privacy" ]; 678 679 repeated string link_local = 16 [ json_name = "link-local" ]; 680 681 bool critical = 17; 682 683 string dhcp_identifier = 18 [ json_name = "dhcp-identifier" ]; 684 685 CommonOpts.DHCPOverrides dhcp4_overrides = 19 686 [ json_name = "dhcp4-overrides" ]; 687 688 CommonOpts.DHCPOverrides dhcp6_overrides = 20 689 [ json_name = "dhcp6-overrides" ]; 690 691 bool accept_ra = 21; 692 693 repeated string addresses = 22; 694 695 CommonOpts.Nameservers nameservers = 23; 696 697 string macaddress = 24; 698 699 int32 mtu = 25; 700 701 bool optional = 26; 702 703 repeated string optional_addresses = 27 704 [ json_name = "optional-addresses" ]; 705 706 repeated CommonOpts.Routes routes = 28; 707 708 CommonOpts.RoutingPolicy routing_policy = 29 709 [ json_name = "routing-policy" ]; 710 711 CommonOpts.Auth auth = 30; 712 713 // Deprecated 714 string gateway4 = 31; 715 716 // Deprecated 717 string gateway6 = 32; 718 719 reserved 10; 720 } 721 722 reserved 2, 3, 4, 5, 6, 7, 8; 723 } 724 725 message NetplanConfig { NetworkingConfig network = 1; } 726 727 // SSHConfig defines the ssh configuration for the Device. 728 message SSHConfig { 729 bool disable_ssh_server = 1; 730 731 bool disable_ssh_password = 2; 732 733 repeated AuthKey ssh_authorized = 3; 734 735 repeated string ip_allow_list = 4; 736 737 repeated string ip_deny_list = 5; 738 739 google.protobuf.Duration reject_period = 6; 740 741 bool disable_ssh_authkey = 7; 742 743 message AuthKey { 744 string ssha_key = 1; 745 746 bool cert_authority = 2; 747 748 string command = 3; 749 750 string environment = 4; 751 752 string from = 5; 753 754 bool no_agent_forwarding = 6; 755 756 bool no_port_forwarding = 7; 757 758 bool no_pty = 8; 759 760 bool no_user_rc = 9; 761 762 bool no_x11_forwarding = 10; 763 764 string permitopen = 11; 765 766 string principals = 12; 767 768 string tunnel = 13; 769 770 bool restrict = 14; 771 } 772 } 773 774 message AttestationConfig { 775 // If true, the droplet will try to attest itself. 776 bool attestation_expected = 1; 777 778 // Attestation domain for device attestation. 779 string attestation_domain = 2; 780 781 // Insecure, use for dev only. 782 // If non-zero, droplet will use an in-memory TPM simulator instead of an 783 // actual, physical one, using the provided seed as initialization seed. 784 // OK, this is not *actually* insecure, since server-side should verify 785 // trustworthiness of the key anyways (the entire point of verification 786 // protocol after all), but it's better to mark it this way for people who 787 // don't read the documentation. 788 // 789 // This field is designed to be used for development purposes, as it 790 // allows for running the attestation protocol on devices which don't have 791 // a TMP chip. To make it work, ensure that attestation domain policies 792 // are configured for development as well (depends on which aspect we're 793 // testing; at the very least 794 // insecure_skip_manufacturer_ekcert_verification should be probably set 795 // to true). 796 int32 insecure_use_tpm_simulator_seed = 3; 797 } 798 799 message LoggingConfig { 800 // Log priority as understood by systemd (0 - emergency, 1 - alert, 2 - 801 // critical, 3 - error, 4 - warning, 5 - notice, 6 - informational, 7 - 802 // debug). Journal logs with this priority and higher will be uploaded to 803 // the server. 804 int32 priority = 1; 805 806 // List of systemd unit names to monitor for logs, e.g. 807 // NetworkManager.service, docker.service. 808 // Leave empty to export all journald logs. 809 repeated string units = 2; 810 811 // Whether the journald log exporter is enabled. 812 bool enable_journal_export = 3; 813 } 814 815 message ProxyConfig { 816 string http_proxy = 1; 817 818 string https_proxy = 2; 819 820 string no_proxy = 3; 821 822 // By default proxy is applicable for all interfaces 823 // configuring proxy_interfaces allows to restrict proxy setting to be 824 // used only with specific interfaces At present this is only used for 825 // Control Plane (for eg LTE fallback) 826 repeated string proxy_interfaces = 4; 827 } 828 829 // Device location of the device. 830 message Location { 831 string address = 1; 832 833 string placement = 2; 834 } 835 836 // MERGE or REPLACE the api netplan_config with the baked in config in the 837 // device 838 enum NetworkConfigMode { 839 MERGE = 0; 840 841 REPLACE = 1; 842 } 843 844 reserved 3, 4; 845 } 846 847 message Status { 848 // List of network addresses. 849 repeated Address addresses = 1; 850 851 // List of conditions of the Device. 852 repeated Condition conditions = 2; 853 854 NetworkConfigState network_config_state = 105; 855 856 ProxyConfigStatus proxy_config_status = 106; 857 858 // Device detailed information 859 DeviceInfo device_info = 3; 860 861 repeated ntt.iam.v1alpha2.PCR attestation_status = 4; 862 863 // Normalized Address. 864 NormalizedAddress normalized_address = 5; 865 866 // Interface addresses of the Device. 867 message Address { 868 // IPv4 or IPv6 address such as `203.0.113.5` (no suffix for subnet) 869 string address = 1; 870 871 // Always `InternalIP` 872 string type = 2; 873 } 874 875 // Condition holds status of each sub component or module of the device. 876 message Condition { 877 // The message describes the status. 878 string message = 1; 879 880 // The reason for the status. 881 string reason = 2; 882 883 // The status name. 884 string status = 3; 885 886 // Type name of the status. 887 string type = 4; 888 889 // When the status has been updated last time. 890 google.protobuf.Timestamp last_heart_beat_time = 5; 891 892 // When the status has tuned into the current value. 893 google.protobuf.Timestamp last_transition_time = 6; 894 } 895 896 message NetworkConfigState { 897 NetworkConfigSource active_network_config_source = 1; 898 899 NetworkConfigSource desired_network_config_source = 2; 900 901 string desired_network_config_error = 3; 902 903 Spec.NetplanConfig default_config = 4; 904 905 Spec.NetplanConfig active_config = 5; 906 907 Spec.NetplanConfig desired_config = 6; 908 909 enum NetworkConfigSource { 910 UNKNOWN = 0; 911 912 DEFAULT_CONFIG = 1; 913 914 API_CONFIG = 2; 915 916 MERGED_DEFAULT_AND_API_CONFIG = 3; 917 918 PREVIOUS_MERGED_DEFAULT_AND_API_CONFIG = 4; 919 920 PREVIOUS_API_CONFIG = 5; 921 } 922 } 923 924 message ProxyConfigStatus { 925 ProxyConfigSource active_config_source = 1; 926 927 ProxyConfigSource desired_config_source = 2; 928 929 string proxy_config_error = 3; 930 931 Spec.ProxyConfig default_config = 4; 932 933 Spec.ProxyConfig active_config = 5; 934 935 Spec.ProxyConfig api_config = 6; 936 937 enum ProxyConfigSource { 938 NO_CONFIG = 0; 939 940 DEFAULT_CONFIG = 1; 941 942 API_CONFIG = 2; 943 } 944 } 945 946 // Device Information 947 message DeviceInfo { 948 // The architecture of the CPU (and the software compilied for) (e.g. 949 // `arm64`) 950 string architecture = 1; 951 952 // Base OS name (e.g. `Linux`) 953 string operating_system = 2; 954 955 // OS kernel version 956 string kernel_version = 3; 957 958 // OS base Image name 959 string os_image = 4; 960 961 // Not used 962 string container_runtime_version = 5; 963 964 // Liquid OS version currently used. 965 string os_version = 6; 966 967 // Container driver name (e.g. `/var/lib/droplet/compose`) 968 string driver = 101; 969 970 HardwareInformation hardware_information = 102; 971 972 map<string, NetworkInterface> network_interfaces = 103; 973 974 ControlPlaneInterfaceInfo control_plane_interface_info = 104; 975 976 message HardwareInformation { 977 OS os = 1; 978 979 BIOS bios = 2; 980 981 System system = 3; 982 983 CPU cpu = 4; 984 985 Block block = 5; 986 987 Network network = 6; 988 989 GPU gpu = 7; 990 991 MemoryInfo memory_info = 8; 992 993 HailoInfo hailo_info = 20; 994 995 NvidiaInfo nvidia_info = 21; 996 997 repeated ModemStatus modem_status = 22; 998 999 message Capability { 1000 string name = 1; 1001 1002 string description = 2; 1003 } 1004 1005 message OS { 1006 string operating_system = 1; 1007 1008 string kernel_version = 2; 1009 1010 string os_image = 3; 1011 1012 string container_runtime_version = 4; 1013 } 1014 1015 // TODO: Add capabilities and size 1016 message BIOS { 1017 string vendor = 1; 1018 1019 string bios_version = 2; 1020 1021 string release_date = 3; 1022 } 1023 1024 message System { 1025 string manufacturer = 1; 1026 1027 string product_name = 2; 1028 1029 string version = 3; 1030 1031 string serial_number = 4; 1032 1033 Configuration configuration = 5; 1034 1035 message Configuration { 1036 string chassis = 1; 1037 1038 string uuid = 2; 1039 1040 string sku_number = 3; 1041 1042 string family = 4; 1043 } 1044 } 1045 1046 message CPU { 1047 repeated Processor processors = 1; 1048 1049 message Processor { 1050 string vendor = 1; 1051 1052 string model = 2; 1053 1054 repeated Capability capabilities = 3; 1055 1056 uint32 num_threads = 4; 1057 1058 uint32 num_cores = 5; 1059 1060 uint32 num_enabled_cores = 6; 1061 1062 string name = 7; 1063 1064 string serial = 8; 1065 1066 int64 frequency_mhz = 9; 1067 1068 int64 max_frequency_mhz = 10; 1069 1070 repeated Cache cache_info = 11; 1071 1072 string driver = 12; 1073 1074 int64 latency = 13; 1075 1076 int64 clock = 14; 1077 1078 message Cache { 1079 string type = 1; 1080 1081 int64 size_bytes = 2; 1082 } 1083 } 1084 } 1085 1086 message Block { 1087 repeated Disk disks = 1; 1088 1089 message Disk { 1090 string name = 1; 1091 1092 int64 size_bytes = 2; 1093 1094 string drive_type = 3; 1095 1096 string vendor = 4; 1097 1098 string model = 5; 1099 1100 string serial_number = 6; 1101 1102 string wwn = 7; 1103 1104 repeated Partition partitions = 8; 1105 1106 message Partition { 1107 string name = 1; 1108 1109 int64 size_bytes = 2; 1110 1111 string mount_point = 3; 1112 1113 string type = 4; 1114 } 1115 } 1116 } 1117 1118 message Network { 1119 repeated NIC nics = 1; 1120 1121 message NIC { 1122 string name = 1; 1123 1124 string mac_address = 2; 1125 1126 bool virtual = 3; 1127 1128 string description = 4; 1129 1130 string product_name = 5; 1131 1132 string vendor = 6; 1133 1134 string subvendor = 7; 1135 1136 map<string, string> setting = 8; 1137 } 1138 } 1139 1140 message GPU { 1141 repeated GraphicCard graphic_cards = 1; 1142 1143 message GraphicCard { 1144 int64 index = 1; 1145 1146 PCIDevice device = 2; 1147 } 1148 } 1149 1150 // Revisit: May be just device ?? 1151 message PCIDevice { 1152 string address = 1; 1153 1154 string vendor = 2; 1155 1156 string product = 3; 1157 1158 string name = 4; 1159 1160 string subvendor = 5; 1161 } 1162 1163 message MemoryInfo { 1164 repeated Memory memory = 1; 1165 1166 message Memory { 1167 string description = 1; 1168 1169 int64 size_bytes = 2; 1170 1171 repeated MemoryBank memory_banks = 3; 1172 1173 message MemoryBank { 1174 string description = 1; 1175 1176 string product = 2; 1177 1178 string vendor = 3; 1179 1180 string serial = 4; 1181 1182 string slot = 5; 1183 1184 int64 size_bytes = 6; 1185 1186 int64 frequency_hz = 7; 1187 1188 int32 width_bits = 8; 1189 } 1190 } 1191 } 1192 1193 message HailoInfo { 1194 string status = 1; 1195 1196 string cli_version = 2; 1197 1198 repeated HailoModuleInfo modules = 10; 1199 1200 message HailoModuleInfo { 1201 string dev_id = 1; 1202 1203 string control_proto_version = 2; 1204 1205 string firmware_version = 3; 1206 1207 string logger_version = 4; 1208 1209 string board_name = 5; 1210 1211 string serial_number = 6; 1212 1213 string part_number = 7; 1214 1215 string product_name = 8; 1216 1217 string neural_network_core_clock_rate = 9; 1218 } 1219 } 1220 1221 message NvidiaInfo { 1222 string status = 1; 1223 1224 string driver_version = 2; 1225 1226 string cuda_version = 3; 1227 1228 repeated GpuInfo gpus = 10; 1229 1230 message GpuInfo { 1231 string id = 1; 1232 1233 string product_name = 2; 1234 } 1235 } 1236 1237 message ModemStatus { 1238 Modem modem = 1; 1239 1240 message RegistrationSettings { 1241 string drx_cycle = 1; 1242 1243 string mico_mode = 2; 1244 } 1245 1246 message FiveGNr { RegistrationSettings registration_settings = 1; } 1247 1248 message Settings { 1249 string apn = 1; 1250 1251 string ip_type = 2; 1252 1253 string password = 3; 1254 1255 string user = 4; 1256 } 1257 1258 message InitialBearer { 1259 string dbus_path = 1; 1260 1261 Settings settings = 2; 1262 } 1263 1264 message Eps { 1265 InitialBearer initial_bearer = 1; 1266 1267 string ue_mode_operation = 2; 1268 } 1269 1270 message ThreeGpp { 1271 FiveGNr fiveg_nr = 1; 1272 1273 repeated string enabled_locks = 2; 1274 1275 Eps eps = 3; 1276 1277 string imei = 4; 1278 1279 string operator_code = 5; 1280 1281 string operator_name = 6; 1282 1283 string packet_service_state = 7; 1284 1285 string pco = 8; 1286 1287 string registration_state = 9; 1288 } 1289 1290 message Cdma { 1291 string activation_state = 1; 1292 1293 string cdma1x_registration_state = 2; 1294 1295 string esn = 3; 1296 1297 string evdo_registration_state = 4; 1298 1299 string meid = 5; 1300 1301 string nid = 6; 1302 1303 string sid = 7; 1304 } 1305 1306 message SignalQuality { 1307 string recent = 1; 1308 1309 string value = 2; 1310 } 1311 1312 message Generic { 1313 repeated string access_technologies = 1; 1314 1315 repeated string bearers = 2; 1316 1317 string carrier_configuration = 3; 1318 1319 string carrier_configuration_revision = 4; 1320 1321 repeated string current_bands = 5; 1322 1323 repeated string current_capabilities = 6; 1324 1325 string current_modes = 7; 1326 1327 string device = 8; 1328 1329 string device_identifier = 9; 1330 1331 repeated string drivers = 10; 1332 1333 string equipment_identifier = 11; 1334 1335 string hardware_revision = 12; 1336 1337 string manufacturer = 13; 1338 1339 string model = 14; 1340 1341 repeated string own_numbers = 15; 1342 1343 string plugin = 16; 1344 1345 repeated string ports = 17; 1346 1347 string power_state = 18; 1348 1349 string primary_port = 19; 1350 1351 string primary_sim_slot = 20; 1352 1353 string revision = 21; 1354 1355 SignalQuality signal_quality = 22; 1356 1357 string sim = 23; 1358 1359 repeated string sim_slots = 24; 1360 1361 string state = 25; 1362 1363 string state_failed_reason = 26; 1364 1365 repeated string supported_bands = 27; 1366 1367 repeated string supported_capabilities = 28; 1368 1369 repeated string supported_ip_families = 29; 1370 1371 repeated string supported_modes = 30; 1372 1373 string unlock_required = 31; 1374 1375 repeated string unlock_retries = 32; 1376 } 1377 1378 message Signal5g { 1379 string error_rate = 1; 1380 1381 string rsrp = 2; 1382 1383 string rsrq = 3; 1384 1385 string snr = 4; 1386 } 1387 1388 message SignalCdma1x { 1389 string ecio = 1; 1390 1391 string error_rate = 2; 1392 1393 string rssi = 3; 1394 } 1395 1396 message SignalEvdo { 1397 string ecio = 1; 1398 1399 string error_rate = 2; 1400 1401 string io = 3; 1402 1403 string rssi = 4; 1404 1405 string sinr = 5; 1406 } 1407 1408 message SignalGsm { 1409 string error_rate = 1; 1410 1411 string rssi = 2; 1412 } 1413 1414 message SignalLte { 1415 string error_rate = 1; 1416 1417 string rsrp = 2; 1418 1419 string rsrq = 3; 1420 1421 string rssi = 4; 1422 1423 string snr = 5; 1424 } 1425 1426 message SignalRefresh { string rate = 1; } 1427 1428 message SignalThreshold { 1429 string error_rate = 1; 1430 1431 string rssi = 2; 1432 } 1433 1434 message SignalUmts { 1435 string ecio = 1; 1436 1437 string error_rate = 2; 1438 1439 string rscp = 3; 1440 1441 string rssi = 4; 1442 } 1443 1444 message Signal { 1445 Signal5g five_g = 1; 1446 1447 SignalCdma1x cdma1x = 2; 1448 1449 SignalEvdo evdo = 3; 1450 1451 SignalGsm gsm = 4; 1452 1453 SignalLte lte_signal = 5; 1454 1455 SignalRefresh refresh = 6; 1456 1457 SignalThreshold threshold = 7; 1458 1459 SignalUmts umts = 8; 1460 } 1461 1462 message SimStatus { 1463 string dbus_path = 1; 1464 1465 string active = 2; 1466 1467 string eid = 3; 1468 1469 repeated string emergency_numbers = 4; 1470 1471 string esim_status = 5; 1472 1473 string gid1 = 6; 1474 1475 string gid2 = 7; 1476 1477 string iccid = 8; 1478 1479 string imsi = 9; 1480 1481 string operator_code = 10; 1482 1483 string operator_name = 11; 1484 1485 string removability = 12; 1486 1487 string sim_type = 13; 1488 } 1489 1490 message Modem { 1491 ThreeGpp three_g_pp = 1; 1492 1493 Cdma cdma = 2; 1494 1495 string dbus_path = 3; 1496 1497 Generic generic = 4; 1498 1499 Signal signal = 5; 1500 1501 map<string, SimStatus> sim_status = 7; 1502 1503 reserved 6; 1504 } 1505 } 1506 } 1507 1508 // Network Interface 1509 message NetworkInterface { 1510 string interface_name = 1; 1511 1512 repeated string ip_address_v4 = 2; 1513 1514 repeated string external_ip_address_v4 = 3; 1515 1516 repeated string ip_address_v6 = 4; 1517 1518 repeated string external_ip_address_v6 = 5; 1519 1520 // Asinfo describes the ISP (ASN) details for the interface 1521 // This is resolved automatically from the external_ip_address. 1522 ASInfo as_info = 10; 1523 1524 // Carrier. 1525 Carrier carrier = 14; 1526 1527 message ASInfo { 1528 // AS Number string example AS7018 1529 string asn = 1; 1530 1531 // AS Owner name example AT&T Services, Inc. 1532 string name = 2; 1533 1534 // Domain name example att.com 1535 string domain = 3; 1536 1537 // Routes exported from this ASN example 12.128.0.0/9 1538 repeated string routes = 4; 1539 1540 // ASN Owner type example isp(AT&T) / hosting(google)/ business 1541 // (Amazon) 1542 string asn_type = 5; 1543 } 1544 1545 message Carrier { 1546 // Mobile network carrier name example AT&T 1547 string name = 1; 1548 1549 // Mobile country code example 214 1550 string mobile_country_code = 2; 1551 1552 // Mobile network code example 7 1553 string mobile_network_code = 3; 1554 1555 // Mobile location area code example 2862 1556 string location_area_code = 4; 1557 } 1558 } 1559 1560 message ControlPlaneInterfaceInfo { 1561 string active_control_plane_interface = 1; 1562 1563 bool usesProxy = 2; 1564 1565 // is_fallback would be true if droplet could not connect using the best 1566 // default route and explicitly uses this interface to connect to api 1567 // endpoint 1568 bool is_fallback = 3; 1569 } 1570 } 1571 1572 message NormalizedAddress { 1573 // Postal code 1574 string postal_code = 1; 1575 1576 // Country code example US, JP 1577 string country_code = 2; 1578 1579 // Continent, e.g. North America, Asia 1580 string continent = 3; 1581 1582 string continent_id = 4; 1583 1584 // Country name example United States, Japan 1585 string country = 5; 1586 1587 string country_id = 6; 1588 1589 // Probe Location Administrative Area level 1 name, e.g. California 1590 // (state), Chiba (prefecture) 1591 string admin_area1 = 7; 1592 1593 string admin_area1_id = 8; 1594 1595 // Probe Location Administrative Area level 2 name, e.g. Santa Clara 1596 // (county), Tateyama (town) 1597 string admin_area2 = 9; 1598 1599 string admin_area2_id = 10; 1600 1601 // Probe Location Administrative Area level 3 name, e.g. Sunnyvale (city) 1602 string admin_area3 = 11; 1603 1604 string admin_area3_id = 12; 1605 1606 // Probe Location Administrative Area level 4 name, e.g. Sunnyvale (city) 1607 string admin_area4 = 13; 1608 1609 string admin_area4_id = 14; 1610 1611 // Original address. 1612 string address = 15; 1613 1614 // coordinates 1615 google.type.LatLng coordinates = 16; 1616 1617 // location accuracy in meters 1618 double accuracy = 17; 1619 } 1620 } 1621 1622 message PublicListingSpec { 1623 bool enabled = 1; 1624 1625 google.protobuf.FieldMask field_mask = 2; 1626 } 1627 }