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  }