@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
350 lines (349 loc) • 11.1 kB
TypeScript
import { Observable } from 'rxjs';
import { AuthorizationManager } from '../security/authorization-manager';
import { CimKeyProperties, CimMultiple, CimResult, CimSingle } from './cim';
import { NodeRequestOptions } from './node-connection';
import { PowerShellStream } from './powershell-stream';
import { WebsocketStream, WebsocketStreamDataRequestState, WebsocketStreamDataState, WebsocketStreamDataTarget, WebsocketStreamHandler } from './websocket-stream';
/**
* Cim result format.
*/
export declare enum CimResultFormat {
/**
* Single instance result.
*/
Single = 0,
/**
* Multiple instances result.
*/
Multiple = 1,
/**
* Mixed data result.
*/
Result = 2
}
/**
* Cim Stream options.
*/
export interface CimStreamOptions extends NodeRequestOptions {
/**
* Partial data response. By default, it responses back with completed data.
*/
partial?: boolean;
/**
* Override Query ID so it can request cancel.
*/
queryId?: string;
/**
* Buffering time period by milliseconds.
*/
bufferTime?: number;
/**
* Buffering count.
*/
bufferCount?: number;
}
/**
* CIM Get instance multiple.
*/
export interface CimGetInstanceMultiple {
name: 'CimGetInstanceMultiple';
namespace: string;
className: string;
}
/**
* Cim Get instance single.
*/
export interface CimGetInstanceSingle {
name: 'CimGetInstanceSingle';
namespace: string;
className: string;
keyProperties: CimKeyProperties;
}
/**
* Cim Invoke method instance.
*/
export interface CimInvokeMethodInstance {
name: 'CimInvokeMethodInstance';
namespace: string;
className: string;
methodName: string;
keyProperties: CimKeyProperties;
data?: any;
}
/**
* Cim Invoke method static.
*/
export interface CimInvokeMethodStatic {
name: 'CimInvokeMethodStatic';
namespace: string;
className: string;
methodName: string;
data?: any;
}
/**
* Cim Set instance.
*/
export interface CimSetInstance {
name: 'CimSetInstance';
namespace: string;
className: string;
keyProperties: CimKeyProperties;
data: any;
}
/**
* Cim Modify instance.
*/
export interface CimModifyInstance {
name: 'CimModifyInstance';
namespace: string;
className: string;
keyProperties: CimKeyProperties;
data: any;
}
/**
* Cim Delete instance.
*/
export interface CimDeleteInstance {
name: 'CimDeleteInstance';
namespace: string;
className: string;
keyProperties: CimKeyProperties;
}
/**
* Cim Get instance query.
*/
export interface CimGetInstanceQuery {
name: 'CimGetInstanceQuery';
namespace: string;
query: string;
}
/**
* Cim Stream request data.
*/
export declare type CimStreamRequestData = CimGetInstanceMultiple | CimGetInstanceSingle | CimInvokeMethodInstance | CimInvokeMethodStatic | CimSetInstance | CimModifyInstance | CimDeleteInstance | CimGetInstanceQuery;
/**
* The request packet of Cim Stream to the gateway.
*/
export interface CimStreamRequest {
/**
* The identification string (auto generated or supplied as queryId option.)
*/
id: string;
/**
* The stream target.
*/
target: WebsocketStreamDataTarget;
/**
* The date request state.
*/
requestState: WebsocketStreamDataRequestState;
/**
* The request data.
*/
request: CimStreamRequestData;
/**
* The Cim stream options.
*/
options?: CimStreamOptions;
}
/**
* Cim stream response.
*/
export interface CimStreamResponse {
/**
* Request ID from client.
*/
id: string;
/**
* The state of response data.
*/
state: WebsocketStreamDataState;
/**
* The index number of response data.
*/
index: number;
/**
* The response data.
*/
response: any;
}
export interface CimStreamMonitorSetContext<T> {
nodeName: string;
requestState: WebsocketStreamDataRequestState;
request: CimStreamRequestData;
format: CimResultFormat;
options?: CimStreamOptions;
data: T;
}
/**
* Set of monitors for pre and post process of cim stream.
*/
export interface CimStreamMonitorSet<T> {
name: string;
preMonitor: (nodeName: string, requestState: WebsocketStreamDataRequestState, request: CimStreamRequestData, format: CimResultFormat, options?: CimStreamOptions) => Observable<CimStreamMonitorSetContext<any>>;
successMonitor: (result: T, context: CimStreamMonitorSetContext<any>) => Observable<T>;
errorMonitor: (error: any, context: CimStreamMonitorSetContext<any>) => Observable<T>;
}
/**
* The CIM stream class.
*/
export declare class CimStream implements WebsocketStreamHandler {
private websocketStream;
private powerShellStream;
private authorizationManager;
private static readonly logSourceName;
/**
* The collection of set of monitors.
*/
private static monitorSets;
private processors;
private strings;
/**
* Register the set of monitors.
*
* @param monitorSet The set of monitors.
*/
static registerMonitorSet(monitorSet: CimStreamMonitorSet<any>): void;
/**
* Unregister the set of monitors.
*
* @param name The name of set of monitors.
* @returns boolean true if unregistered the named set.
*/
static unregisterMonitors(name: string): boolean;
/**
* Initializes a new instance of the CimStream class.
*
* @param websocketStream the websocket stream object.
* @param powerShellStream the PowerShell steam object.
* @param authorizationManager the authorization manager object.
*/
constructor(websocketStream: WebsocketStream, powerShellStream: PowerShellStream, authorizationManager: AuthorizationManager);
/**
* CIM Get MultipleInstances
*
* @param nodeName the name of the node to use for this request
* @param namespace the cim namespace.
* @param className the class name.
* @param options the options for this request.
* @return Observable<CimResult> the query observable.
*/
getInstanceMultiple(nodeName: string, namespace: string, className: string, options?: CimStreamOptions): Observable<CimMultiple>;
/**
* CIM Get SingleInstance
*
* @param nodeName the name of the node to use for this request
* @param namespace the cim namespace.
* @param className the class name.
* @param keyProperties the key properties object.
* @param options the options for this request.
* @return Observable<any> the query observable.
*/
getInstanceSingle(nodeName: string, namespace: string, className: string, keyProperties: CimKeyProperties, options?: CimStreamOptions): Observable<CimSingle>;
/**
* CIM Invoke InstanceMethod
*
* @param nodeName the name of the node to use for this request
* @param namespace the cim namespace.
* @param className the class name.
* @param methodName the method name.
* @param keyProperties the key properties object.
* @param data the method input data.
* @param options the options for this request.
* @return Observable<any> the query observable.
*/
invokeMethodInstance(nodeName: string, namespace: string, className: string, methodName: string, keyProperties: any, data?: any, options?: CimStreamOptions): Observable<CimResult>;
/**
* CIM Invoke StaticMethod
*
* @param nodeName the name of the node to use for this request
* @param namespace the cim namespace.
* @param className the class name.
* @param methodName the method name.
* @param data the method input data.
* @param options the options for this request.
* @return Observable<any> the query observable.
*/
invokeMethodStatic(nodeName: string, namespace: string, className: string, methodName: string, data?: any, options?: CimStreamOptions): Observable<CimResult>;
/**
* CIM Set SingleInstance
*
* @param nodeName the name of the node to use for this request
* @param namespace the cim namespace.
* @param className the class name.
* @param keyProperties the key properties object.
* @param data the method input data.
* @param options the options for this request.
* @return Observable<any> the query observable.
*/
setInstance(nodeName: string, namespace: string, className: string, keyProperties: any, data: any, options?: CimStreamOptions): Observable<CimSingle>;
/**
* CIM Modify SingleInstance
*
* @param nodeName the name of the node to use for this request
* @param namespace the cim namespace.
* @param className the class name.
* @param keyProperties the key properties object.
* @param data the method input data.
* @param options the options for this request.
* @return Observable<any> the query observable.
*/
modifyInstance(nodeName: string, namespace: string, className: string, keyProperties: any, data: any, options?: CimStreamOptions): Observable<CimSingle>;
/**
* CIM Delete SingleInstance
*
* @param nodeName the name of the node to use for this request
* @param namespace the cim namespace.
* @param className the class name.
* @param keyProperties the key properties object.
* @param options the options for this request.
* @return Observable<any> the query observable.
*/
deleteInstance(nodeName: string, namespace: string, className: string, keyProperties: any, options?: CimStreamOptions): Observable<CimSingle>;
/**
* CIM Submit WqlQuery
*
* @param nodeName the name of the node to use for this request
* @param namespace the cim namespace.
* @param query the WQL string.
* @param options the options for this request.
* @return Observable<any> the query observable.
*/
getInstanceQuery(nodeName: string, namespace: string, query: string, options?: CimStreamOptions): Observable<CimResult>;
/**
* Cancel active CIM query.
* Result response comes back to the original query to end.
*
* @param nodeName the node name.
* @param id the id of original request specified as options.queryId.
*/
cancel(nodeName: string, id: string): void;
/**
* Reset data for connection cleanup.
*/
reset(): void;
/**
* Process the socket message.
*
* @param message the socket message.
*/
process(message: CimStreamResponse): void;
private operationNext;
private operationComplete;
private operationError;
private operationEnd;
private createRequest;
private createRequestSimple;
private sendRequest;
/**
* Set PowerShell parameters to the options object.
*
* @param options The node request options.
* @param outputType The output data type.
* @param keys The key data.
* @param data The arguments data.
*/
private setPowerShellParameters;
private monitorCreateRequest;
private monitor;
}