Der Client muss im Proxyumleitungsnetzwerk vorhanden sein, um eine Verbindung mit dem gRPC-Server herzustellen. Der Client sollte die Adresse cssvcregistry:50051 verwenden, um eine Verbindung mit dem gRPC-Server herzustellen.
// ------------------------------------------------------------------
// Connectivity Suite Registry
// ------------------------------------------------------------------
//
// Naming convention according:
// https://cloud.google.com/apis/design/naming_convention
//
// ------------------------------------------------------------------
syntax = "proto3";
package siemens.connectivitysuite.registry.v1;
//===================================================================
// Discovery (Registry) Interface Definitions
//===================================================================
// ===========================================
// The Services Definition
//
service RegistryApi
{
// Possible return values
// - OK
rpc RegisterService( RegisterServiceRequest ) returns( RegisterServiceResponse ) {}
// Possible return values
// - OK
// - NOT_FOUND - service with the provided key was not registered
rpc UnregisterService( UnregisterServiceRequest ) returns( UnregisterServiceResponse ) {}
// Possible return values
// - OK
rpc QueryRegisteredServices( QueryRegisteredServicesRequest ) returns( QueryRegisteredServicesResponse ) {}
}
// The key of ServiceInfo is the app_instance_id:
message ServiceInfo {
// Mandatory: unique ID of the application
// Examples: "s7p1", "pnioc1"
string app_instance_id = 7;
// Mandatory: Either 'dns_domainname' or 'ipv4_address' needs to be provided.
// Intentionally there is no 'ipv6_address', because ipv6 without DNS will not really work.
oneof grpc_ip {
// DNS host name of the driver
string dns_domainname = 1;
// ipv4 address of the driver
string ipv4_address = 2;
}
// Mandatory: port number of gRPC interface
uint32 grpc_ip_port_number = 3;
// Mandatory: application type
// +----------------------------------------------------
// | Examples
// +-----------------------+----------------------------
// | "cs-driver" | Connectivity Suite Driver
// | "cs-gateway" | Connectivity Suite Gateway which is configured
// | | by the IIH Configurator
// | "noncs-driver" | Driver which supports all interfaces to be configurable
// | | via IIH Configurator, but doesn't support DataApi
// | "cs-import-converter" | Service which can convert a device-specific configuration
// | | file to a 'Connectivity Suite compatible' configuration file.
// | | This app is e.g. used by the IIH Configurator to let convert
// | | specific config files provided by the user to compatible format
// | "cs-tagbrowser" | Service which can browse tags. See the 'BrowsingApi'
// | "iah-discover" | The Connector is acting as a Asset Link (AL) and returns IAH
// | | compliant discover results.
// | | The interface siemens.industrialassethub.discover.v1 must be supported.
//
// For more info see the Connectivity Suite documentation.
repeated string app_types = 4;
// List of all interfaces the app supports.
// An interface is identified by the package name of the proto file / API service
// Examples "siemens.connectivitysuite.browsing.v2" or "siemens.connectivitysuite.data.v1"
// When this list is empty, the service is considered to support all mandatory interfaces
// of the listed app_types and none of the optional ones. Those are then automatically
// added by the Registry Service.
repeated string interfaces = 8;
// Mandatory: the schema identification(s) of the driver
repeated string driver_schema_uris = 5;
}
// RegisterService
message RegisterServiceRequest {
ServiceInfo info = 1;
}
message RegisterServiceResponse {
// maximum time between ServiceInfo refresh in [sec]
uint32 expire_time = 2;
}
// UnregisterService
// Only the following fields of 'info' are considered, the rest is ignored:
// app_instance_id
message UnregisterServiceRequest {
ServiceInfo info = 1;
}
message UnregisterServiceResponse {
}
// QueryRegisteredServices
// Any property which is not set, is ignored
// When a property has multiple values, any entry which matches at least one of the fields matches
// When multiple properties are set, all have to match
//
// Example1: return all apps which have either app_type "cs-driver" or "cs-gateway":
// .app_types = ["cs-driver", "cs-gateway"]
//
// Example2: return all apps which have app_type "cs-import-converter"
// and uri="https://siemens.com/connectivity_suite/schemas/s7plus/1.0.0/config.json":
// .app_types = ["cs-import-converter"]
// .driver_schema_uris = ["https://siemens.com/connectivity_suite/schemas/s7plus/1.0.0/config.json"]
//
message ServiceInfoFilter {
// unique ID(s) of the application
// Examples: "s7p1", "pnioc1"
repeated string app_instance_ids = 2;
// application types
// Examples "cs-driver" or "cs-gateway"
// (see 'ServiceInfo.app_types')
repeated string app_types = 3;
// the schema identification(s) of the driver
repeated string driver_schema_uris = 4;
// interfaces (actually the package names of the interfaces)
// Examples "siemens.connectivitysuite.browsing.v2" or "siemens.connectivitysuite.data.v1"
// (see 'ServiceInfo.interfaces')
repeated string interfaces = 5;
}
message QueryRegisteredServicesRequest {
ServiceInfoFilter filter = 1;
}
message QueryRegisteredServicesResponse {
repeated ServiceInfo infos = 1;
}
| Meldung | Feld | Typ | Label | Beschreibung |
|---|---|---|---|---|
| RegisterServiceAnfrage | Info | ServiceInfo | Enthält die zu registrierenden Dienstinformationen. | |
| RegisterServiceResponse | expire_time | uint32 | Maximale Zeit zwischen der ServiceInfo-Aktualisierung in Sekunden. | |
| Registrierung aufhebenServiceAnforderung | Info | ServiceInfo | Enthält die Dienstinformationen, deren Registrierung aufgehoben werden soll. | |
| UnregisterServiceResponse | Keine Felder. | |||
| QueryRegisteredServicesRequest | Filter | ServiceInfoFilter | Enthält die Filterkriterien für die Abfrage registrierter Dienste. | |
| QueryRegisteredServicesResponse | Infos | ServiceInfo | repeated | Enthält die Liste der Dienstinformationen, die den Abfragekriterien entsprechen. |
| ServiceInfo | app_instance_id | string | Eindeutige ID der Anwendung. Beispiele: "s7p1", "pnioc1". | |
| dns_domainname | string | Einer der | DNS-Hostname des Treibers. | |
| ipv4_address | string | Einer der | IPv4-Adresse des Treibers. | |
| grpc_ip_port_number | uint32 | Portnummer der gRPC-Schnittstelle. | ||
| app_types | string | repeated | Anwendungstypen. Beispiele: "cs-driver", "cs-gateway". | |
| Schnittstellen | string | repeated | Liste aller Schnittstellen, die die App unterstützt. | |
| driver_schema_uris | string | repeated | Schema-Identifikation(en) des Treibers. | |
| ServiceInfoFilter | app_instance_ids | string | repeated | Eindeutige ID(s) der Anwendung. Beispiele: "s7p1", "pnioc1". |
| app_types | string | repeated | Anwendungstypen. Beispiele: "cs-driver", "cs-gateway". | |
| driver_schema_uris | string | repeated | Schema-Identifikation(en) des Treibers. | |
| Schnittstellen | string | repeated | Paketnamen der Schnittstellen. Beispiele: "siemens.connectivitysuite.browsing.v2", "siemens.connectivitysuite.data.v1". |
BEMERKEN
Wenn die Daten über gRPC hinzugefügt werden und älter als 15 Minuten sind, werden die Daten aus der Abfrageantwort entfernt. Daten, die über die HTTPS PUT API hinzugefügt werden, werden jedoch beibehalten und nicht gelöscht. Diese Bedingung gilt nur für gRPC-bezogene Daten.