예제 #1
0
        /// <summary>
        /// <para>
        /// Object here need to be removed if it is CimInstance
        /// </para>
        /// </summary>
        /// <param name="sendToPipeline"></param>
        public override void WriteObject(object sendToPipeline, XOperationContextBase context)
        {
            DebugHelper.WriteLogEx();

            if (sendToPipeline is CimInstance)
            {
                CimSetCimInstanceContext setContext = context as CimSetCimInstanceContext;
                if (setContext != null)
                {
                    if (string.Equals(setContext.ParameterSetName, CimBaseCommand.QueryComputerSet, StringComparison.OrdinalIgnoreCase) ||
                        string.Equals(setContext.ParameterSetName, CimBaseCommand.QuerySessionSet, StringComparison.OrdinalIgnoreCase))
                    {
                        this.setCimInstance.SetCimInstance(sendToPipeline as CimInstance, setContext, this);
                        return;
                    }
                    else
                    {
                        DebugHelper.WriteLog("Write the cimInstance to pipeline since this CimInstance is returned by SetCimInstance.", 4);
                    }
                }
                else
                {
                    DebugHelper.WriteLog("Assert. CimSetCimInstance::SetCimInstance has NULL CimSetCimInstanceContext", 4);
                }
            }

            base.WriteObject(sendToPipeline, context);
        }
예제 #2
0
 /// <summary>
 /// <para>
 /// Object here need to be removed if it is CimInstance
 /// </para>
 /// </summary>
 /// <param name="sendToPipeline"></param>
 public override void WriteObject(object sendToPipeline, XOperationContextBase context)
 {
     if (sendToPipeline is CimInstance)
     {
         DebugHelper.WriteLog(">>>>CmdletOperationRemoveCimInstance::WriteObject", 4);
         this.removeCimInstance.RemoveCimInstance(sendToPipeline as CimInstance, context, this);
     }
     else
     {
         base.WriteObject(sendToPipeline, context);
     }
 }
예제 #3
0
        /// <summary>
        /// <para>
        /// Object here need to be removed if it is CimInstance
        /// </para>
        /// </summary>
        /// <param name="sendToPipeline"></param>
        public override void WriteObject(object sendToPipeline, XOperationContextBase context)
        {
            DebugHelper.WriteLogEx();

            if (sendToPipeline is CimInstance)
            {
                this.cimInvokeCimMethod.InvokeCimMethodOnCimInstance(sendToPipeline as CimInstance, context, this);
            }
            else
            {
                base.WriteObject(sendToPipeline, context);
            }
        }
예제 #4
0
        /// <summary>
        /// <para>
        /// Get full <see cref="CimInstance"/> from server based on the key
        /// </para>
        /// </summary>
        /// <param name="cimInstance"></param>
        internal void GetCimInstance(CimInstance cimInstance, XOperationContextBase context)
        {
            DebugHelper.WriteLogEx();

            CimNewCimInstanceContext newCimInstanceContext = context as CimNewCimInstanceContext;

            if (newCimInstanceContext == null)
            {
                DebugHelper.WriteLog("Invalid (null) CimNewCimInstanceContext", 1);
                return;
            }

            CimSessionProxy proxy     = CreateCimSessionProxy(newCimInstanceContext.Proxy);
            string          nameSpace = (cimInstance.CimSystemProperties.Namespace == null) ? newCimInstanceContext.Namespace : cimInstance.CimSystemProperties.Namespace;

            proxy.GetInstanceAsync(nameSpace, cimInstance);
        }
예제 #5
0
        /// <summary>
        /// <para>
        /// Remove <see cref="CimInstance"/> from namespace specified in cmdlet
        /// </para>
        /// </summary>
        /// <param name="cimInstance"></param>
        internal void RemoveCimInstance(CimInstance cimInstance, XOperationContextBase context, CmdletOperationBase cmdlet)
        {
            DebugHelper.WriteLogEx();

            string target = cimInstance.ToString();

            if (!cmdlet.ShouldProcess(target, action))
            {
                return;
            }

            CimRemoveCimInstanceContext removeContext = context as CimRemoveCimInstanceContext;

            Debug.Assert(removeContext != null, "CimRemoveCimInstance::RemoveCimInstance should has CimRemoveCimInstanceContext != NULL.");

            CimSessionProxy proxy = CreateCimSessionProxy(removeContext.Proxy);

            proxy.DeleteInstanceAsync(removeContext.Namespace, cimInstance);
        }
예제 #6
0
        /// <summary>
        /// <para>
        /// Add session to global cache,
        /// </para>
        /// </summary>
        /// <param name="cimSession"></param>
        /// <param name="context"></param>
        /// <param name="cmdlet"></param>
        internal void AddSessionToCache(CimSession cimSession, XOperationContextBase context, CmdletOperationBase cmdlet)
        {
            DebugHelper.WriteLogEx();

            CimTestCimSessionContext testCimSessionContext = context as CimTestCimSessionContext;
            uint   sessionId           = this.sessionState.GenerateSessionId();
            string originalSessionName = testCimSessionContext.CimSessionWrapper.Name;
            string sessionName         = (originalSessionName != null) ? originalSessionName : string.Format(CultureInfo.CurrentUICulture, @"{0}{1}", CimSessionState.CimSessionClassName, sessionId);

            // detach CimSession from the proxy object
            CimSession createdCimSession = testCimSessionContext.Proxy.Detach();
            PSObject   psObject          = this.sessionState.AddObjectToCache(
                createdCimSession,
                sessionId,
                createdCimSession.InstanceId,
                sessionName,
                testCimSessionContext.CimSessionWrapper.ComputerName,
                testCimSessionContext.Proxy.Protocol);

            cmdlet.WriteObject(psObject, null);
        }
예제 #7
0
        /// <summary>
        /// <para>
        /// Add session object to cache
        /// </para>
        /// </summary>
        /// <param name="sendToPipeline"></param>
        public override void WriteObject(object sendToPipeline, XOperationContextBase context)
        {
            DebugHelper.WriteLogEx();

            if (sendToPipeline is CimSession)
            {
                DebugHelper.WriteLog("Call CimNewSession::AddSessionToCache", 1);

                this.cimNewSession.AddSessionToCache(sendToPipeline as CimSession, context, this);
            }
            else if (sendToPipeline is PSObject)
            {
                DebugHelper.WriteLog("Write PSObject to pipeline", 1);
                base.WriteObject(sendToPipeline, context);
            }
            else
            {
                // NOTES: May need to output for warning message/verbose message
                DebugHelper.WriteLog("Ignore other type object {0}", 1, sendToPipeline);
            }
        }
        /// <summary>
        /// <para>
        /// Invoke cimmethod on given <see cref="CimInstance"/>
        /// </para>
        /// </summary>
        /// <param name="cimInstance"></param>
        public void InvokeCimMethodOnCimInstance(CimInstance cimInstance, XOperationContextBase context, CmdletOperationBase operation)
        {
            DebugHelper.WriteLogEx();
            CimInvokeCimMethodContext cimInvokeCimMethodContext = context as CimInvokeCimMethodContext;

            Debug.Assert(cimInvokeCimMethodContext != null, "CimInvokeCimMethod::InvokeCimMethodOnCimInstance should has CimInvokeCimMethodContext != NULL.");

            string action = string.Format(CultureInfo.CurrentUICulture, actionTemplate, cimInvokeCimMethodContext.MethodName);

            if (!operation.ShouldProcess(cimInstance.ToString(), action))
            {
                return;
            }

            CimSessionProxy proxy = CreateCimSessionProxy(cimInvokeCimMethodContext.Proxy);

            proxy.InvokeMethodAsync(
                cimInvokeCimMethodContext.Namespace,
                cimInstance,
                cimInvokeCimMethodContext.MethodName,
                cimInvokeCimMethodContext.ParametersCollection);
        }
예제 #9
0
 /// <summary>
 /// Constructor
 /// </summary>
 public CimWriteResultObject(object result, XOperationContextBase theContext)
 {
     this.result  = result;
     this.Context = theContext;
 }
예제 #10
0
 /// <summary>
 /// Constructor
 /// </summary>
 public CimWriteResultObject(object result, XOperationContextBase theContext)
 {
     this.result = result;
     this.Context = theContext;
 }
예제 #11
0
 public virtual void WriteObject(object sendToPipeline, bool enumerateCollection, XOperationContextBase context)
 {
     cmdlet.WriteObject(sendToPipeline, enumerateCollection);
 }
예제 #12
0
 public virtual void WriteObject(object sendToPipeline, XOperationContextBase context)
 {
     cmdlet.WriteObject(sendToPipeline);
 }
예제 #13
0
 public override void WriteObject(object sendToPipeline, bool enumerateCollection, XOperationContextBase context)
 {
     if (sendToPipeline is CimInstance)
     {
         this.WriteObject(sendToPipeline, context);
     }
     else
     {
         base.WriteObject(sendToPipeline, enumerateCollection, context);
     }
 }