Quantcast
Channel: VMware Communities : All Content - vRealize Orchestrator
Viewing all 10285 articles
Browse latest View live

Bug in email configuration workflow. fromName and fromAddress reversed.

$
0
0

Oh VMware why do you mock me so????  I just found a bug that made me think I was losing it.  The configuration workflow for the default email settings reverses the fromName and fromAddress.  See my attached screen shot.  You'll clearly see the last two parameters in the ConnectionManager.save() call are flipped.  Do I need to file a bug report through support or is posting here enough?

 

PaulScreen Shot 2016-01-07 at 4.00.15 PM.png


vCD plugin VDC storage policy RequestedMB

$
0
0

I am going thru the API Explorer trying to figure out a way to get the RequestedMB storage for a particular VDC storage policy. Getting the set limit is possible. the requested value is displayed via the vCloud Director web interface so I assume that I can pull it out via Orchestrator aswell.

 

Sadly profile.requested does not exist;

 

sprofiles = vdc.getStorageProfiles();

    for each (profile in sprofiles) {

      System.log(profile.limit);

  }

 

It seems that you can use query services to obtains this info for a provider VDC, but not for an org VDC.

 

Anyone that can provide me with a hint?

How to view schema running on browser?

$
0
0

Hello everyone,

It's possible to view the schema running on browser? The same way when we view on vRO Client.

Please, only show me the way that I search.

 

I'm working with VMware Orchestrator 6.0

 

Cheers!!!

vRO 7 Server Side Client Errors

$
0
0

We recently deployed vRA 7 using the minimal install model to begin planning for a production upgrade from vRA 6 to vRA 7.  Since we are using the minimal install model we are leveraging the vRO 7 instance that’s bundled with the vRA appliance.

As we began testing our existing WF’s in vRA 7 we noticed that the data we were writing to System.log() was not visible in our vRO client.  I reviewed /var/log/vmware/vco/app-server/server.log to confirm that the data I was logging with Server.log() was indeed being written as INFO.  While reviewing server.log I noticed the following client specific error that repeats in the log every 15-20 seconds as long as my vRO Java client is connected and I believe this is why I’m unable to view messages in the Logs tab of the vRO client:

 

2016-01-08 13:57:02.798-0500 [hornetq-failure-check-thread] WARN  {} [RemotingConnectionImpl] Connection failure has been detected: Did not receive data from local:ephemeral. It is likely the client has exited or crashed without closing

its connection, or the network between the server and client has failed. You also might have configured connection-ttl and client-failure-check-period incorrectly. Please check user manual for more information. The connection will now be

closed. [code=3]

2016-01-08 13:57:10.025-0500 [http-nio-127.0.0.1-8280-exec-10] ERROR {} [[messagingServlet]] Servlet.service() for servlet [messagingServlet] in context with path [/vco] threw exception

  1. java.net.SocketTimeoutException

        at org.apache.tomcat.util.net.NioBlockingSelector.read(NioBlockingSelector.java:202)

        at org.apache.tomcat.util.net.NioSelectorPool.read(NioSelectorPool.java:250)

        at org.apache.tomcat.util.net.NioSelectorPool.read(NioSelectorPool.java:231)

        at org.apache.coyote.http11.InternalNioInputBuffer.fill(InternalNioInputBuffer.java:133)

        at org.apache.coyote.http11.InternalNioInputBuffer$SocketInputBuffer.doRead(InternalNioInputBuffer.java:177)

        at org.apache.coyote.http11.filters.ChunkedInputFilter.readBytes(ChunkedInputFilter.java:320)

        at org.apache.coyote.http11.filters.ChunkedInputFilter.parseChunkHeader(ChunkedInputFilter.java:350)

        at org.apache.coyote.http11.filters.ChunkedInputFilter.doRead(ChunkedInputFilter.java:190)

        at org.apache.coyote.http11.AbstractInputBuffer.doRead(AbstractInputBuffer.java:416)

        at org.apache.coyote.Request.doRead(Request.java:469)

        at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:342)

        at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:363)

        at org.apache.catalina.connector.InputBuffer.readByte(InputBuffer.java:356)

        at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:94)

        at java.io.FilterInputStream.read(FilterInputStream.java:83)

        at java.io.PushbackInputStream.read(PushbackInputStream.java:139)

        at org.jboss.netty.channel.socket.http.HttpTunnelingServlet.read(HttpTunnelingServlet.java:199)

        at org.jboss.netty.channel.socket.http.HttpTunnelingServlet.service(HttpTunnelingServlet.java:172)

        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)

        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)

        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:614)

        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)

        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)

        at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:676)

        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)

        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)

        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)

        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)

        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)

        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1526)

        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1482)

        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

        at java.lang.Thread.run(Thread.java:745)

2016-01-08 13:57:10.553-0500 [http-nio-127.0.0.1-8280-exec-5] WARN  {} [HornetQPacketHandler] Reattach request from local:ephemeral failed as there is no confirmationWindowSize configured, which may be ok for your system

2016-01-08 13:57:11.121-0500 [http-nio-127.0.0.1-8280-exec-5] WARN  {} [HornetQPacketHandler] Reattach request from local:ephemeral failed as there is no confirmationWindowSize configured, which may be ok for your system

2016-01-08 13:57:11.681-0500 [http-nio-127.0.0.1-8280-exec-5] WARN  {} [HornetQPacketHandler] Reattach request from local:ephemeral failed as there is no confirmationWindowSize configured, which may be ok for your system

2016-01-08 13:57:12.245-0500 [http-nio-127.0.0.1-8280-exec-5] WARN  {} [HornetQPacketHandler] Reattach request from local:ephemeral failed as there is no confirmationWindowSize configured, which may be ok for your system

2016-01-08 13:57:24.800-0500 [hornetq-failure-check-thread] WARN  {} [RemotingConnectionImpl] Connection failure has been detected: Did not receive data from local:ephemeral. It is likely the client has exited or crashed without closing

its connection, or the network between the server and client has failed. You also might have configured connection-ttl and client-failure-check-period incorrectly. Please check user manual for more information. The connection will now be

closed. [code=3]

 

Has anyone else experienced similar errors or logging behavior in vRO 7?

vRO 6 - guest script manager package - error during script execution

$
0
0

Hello,

 

lately I have been getting an error during a script execution in a guest. Linux servers as well as Windows is affected.

I am using the package to change the root\admin password as a day-2 operation after provisioning a system with vRA. The script simply executes "passwd root" or "net user administrator [paqssword]" on the new server.

The error is under Linux:

"A general system error occurred: Failed to generate url (Workflow:Copy file from guest to vCO / Scriptable task (item1)#9)"

 

 

the vCenter Event Log report "Guest operation authentication failed for operation Create Temporary Directory on Virtual machine [vmname]"

 

The nested workflow that is throwing the error is the "Copy file from guest to vCO" workflow, the code line that the error is pointing to is:

var ftInfo = fileManager.initiateFileTransferFromGuest(vm , guestAuth ,guestFilePath);

 

The guestFilePath value is imported from the attribute scriptOutputFile = /tmp/vmware-root/vmware160/vco_vmware185

 

Under Windows:

A general system error occurred: Failed to generate URL (Workflow:Copy file from vCO to guest / Scriptable task (item1)#11)

 

This time the "Copy file from vCO to guest"

var uri = fileManager.initiateFileTransferToGuest(vm , guestAuth ,guestFilePath, attr, srcFile.length, overwrite);

The value for guestFilePath is coming from cmdAnsiGuestPath = C:\Users\[username]\AppData\Local\Temp\vmware20\cmdANSI.exe

 

Could anyone please help me troubleshoot this?

 

SSH plugin "Run SSH command" workflow does not allow for selecting a SSH:Host

$
0
0

Just curious if the "Run SSH Command" is supposed to allow for an SSH:Host to be selected?  The verbiage suggests that it does (see attached screen shot).  I'm getting ready to revamp some of our workflows that rely on SSH and wanted to make use of the SSH:Host objects.  I find it curious that I don't see any use of these objects anywhere in the default workflows and actions.

 

PaulScreen Shot 2016-01-07 at 11.03.37 AM.png

"No certificate(s) found in WS-Security profile" Error during passing the "UsernameToken" header in SOAP request.

$
0
0

Hello Team,

 

I am using SOAP plug-in (1.0.3 ) with VMware vCenter Orchestrator 5.5.  From Orchestrator Client, I am trying to invoke an operation by SOAP request. The operation was invoked successful when there was no security information passing  to soap header. But issue occured when I tried to put a custom header ("UsernameToken") in the SOAP request via SOAP Interceptor class and execute the workflow. Please see below the code snippet which I am using in my Workflow.

Can you please check and let me know if anything more need to pass in SOAP request header ?

Also, please let me know if you need anything more from my side.

  

  

#################################Code Snippet in Workflow################################### 

   //Added for SOAP Interceptor [Starts]...............

  var interceptor = new SOAPInterceptor();   

    interceptor.setRequestHeaderInterceptor(requestHeaderHandler);   

    interceptor.setRequestBodyInterceptor(requestBodyHandler);   

   

function requestHeaderHandler(content) {   

System.log("This is the request header: '" + content + "'");   

// process & return your header here

    var content = 

     "<Security xmlns='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd'>" +

     "<UsernameToken>" +

       "<Username>xxxxxx</Username>" +

       "<Password>xxxxxxx</Password>" +

    " </UsernameToken>" +

   "</Security>";

 

 

    System.log("This is the request custom header : '" + content + "'");

   return content;

      

}

function requestBodyHandler(content) {   

System.log("This is the request body: '" + content + "'");

// process & return your header here 

}

var response = operationtype.invokeWithInterceptor(request, interceptor);

################################################################################# 

 

 

  

Error in the Workflow log and as well as server log.  

  

########################################################

- An error was discovered processing the WS-Security header

<faultcode>wsse:InvalidSecurity</faultcode>

<faultstring>An error was discovered processing the WS-Security header</faultstring>

<detail>No certificate(s) found in WS-Security profile</detail>

 

 

#########################################################

 

 

 

Even I am trying to invoke the request from SOAP_UI and getting the same exception: Please see below the SOAP_UI request and response.

  

 

 

SOAP_UI request:

**********************************************************************  

   <soapenv:Envelope xmlns:inc="http://www.service-now.com/incident" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">

   <soapenv:Header>

      <wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">

         <wsse:UsernameToken wsu:Id="UsernameToken-43298AF64B6243FA5D14524901201551">

            <wsse:Username>deepak</wsse:Username>

            <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">NFK8HfW+302OJj40Tl4g9Gu+UsU=</wsse:Password>

            <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">QB9tbUyepZSxuN1JSUkQZA==</wsse:Nonce>

            <wsu:Created>2016-01-11T05:28:40.153Z</wsu:Created>

         </wsse:UsernameToken>

      </wsse:Security>

   </soapenv:Header>

   <soapenv:Body>

      <inc:insert>

         <inc:comments>Test</inc:comments>

         <inc:description>Test Insert Incident</inc:description>

         <inc:number>INC000000222</inc:number>

         <inc:short_description>Test Insert Incident Short Description</inc:short_description>

         <inc:work_notes>Test Work Notes</inc:work_notes>

      </inc:insert>

   </soapenv:Body>

</soapenv:Envelope>

*******************************************************************

 

 

SOAP_UI Response:

 

 

****************************************************************

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">

   <SOAP-ENV:Header/>

   <SOAP-ENV:Body>

      <SOAP-ENV:Fault>

         <faultcode>wsse:InvalidSecurity</faultcode>

         <faultstring>An error was discovered processing the WS-Security header</faultstring>

         <detail>No certificate(s) found in WS-Security profile</detail>

      </SOAP-ENV:Fault>

   </SOAP-ENV:Body>

</SOAP-ENV:Envelope>

******************************************************************

  

  

   Thanks,

   Koushik

Technical preview version of VMware vRealize Orchestrator Plug-In for Mail

$
0
0

Technical preview version of VMware vRealize Orchestrator Plug-In for Mail

This is a patch release of the plug-in.


Version7.0.0-3426007


  • Fix "Configure mail" standard workflow - swapped fromName and fromAddress parameters in the scripting ConnectionManager.save() call




External Trigger for a workflow

$
0
0

Hi,

How can i start a workflow with a external trigger like a PowerShell Script?

regards

Denis

Issue running 'Add a vRA host' workflow in vRA 7.0 plugin

$
0
0

I am trying to run the 'Add a vRA host' workflow in the vRA 7.0 plugin for vRO 7.0, and get the following error adding the host:

 

[2016-01-11 11:27:01.432] [E] Could not initialize class com.vmware.horizon.common.api.token.SuiteToken (Workflow:Add a vRA host / Add a vRA host (item0)#58067) - <my_vra_host>

[2016-01-11 11:27:01.444] [E] Workfow execution stack:

***

item: 'Add a vRA host/item2', state: 'failed', business state: 'null', exception: 'Could not initialize class com.vmware.horizon.common.api.token.SuiteToken (Workflow:Add a vRA host / Add a vRA host (item0)#58067)'

workflow: 'Add a vRA host' (0c8620c8-056b-4820-8d8e-9744fe22e406)

|  'attribute': name=errorCode type=string value=Could not initialize class com.vmware.horizon.common.api.token.SuiteToken (Workflow:Add a vRA host / Add a vRA host (item0)#58067)

|  'input': name=name type=string value=<my_vra_host>

|  'input': name=url type=string value=https://<my_vra_host>

|  'input': name=tenant type=string value=vsphere.local

|  'input': name=authUsername type=string value=configurationadmin@vsphere.local

|  'input': name=authPassword type=SecureString value=__NULL__

|  'input': name=connectionTimeout type=number value=30.0

|  'input': name=operationTimeout type=number value=60.0

|  'input': name=sessionMode type=string value=Shared Session

|  'input': name=acceptAllCertificates type=boolean value=true

|  'output': name=vcacHost type=vCACCAFE:VCACHost value=null

*** End of execution stack.

 

Has anyone else seen this error? I have also tried adding the host with a domain account added to the Tenant Administrators group from my Active Directory Identity Source.

 

Thanks in advance.

 

Tim

How to get vCO server name (hostname).

$
0
0

Hello.

 

Does anybody know how to get hostname or IP address of the vCO server within a workflow running on that server? Is there any kind of property or method returning hostname of the local host?

 

Thank you.

vRealize Orchestrator - ovfManager.parseDescriptor returning error

$
0
0

Hi,

 

I am planning to write a script in vRealize Orchestrator to import an OVF. For that I have started with the script and have written so far this and running it to take one step at a time. But I am getting error "TypeError: Cannot call method "parseDescriptor" of null" for function parseDecriptor " I have added System.log(ovfD) to print the ocf content to verify and it prints. So still I do not know why it is giving me this. Am I missing anything here?

 

var ovfmanager = host.sdkConnection.ovfManager();

var descriptorSpec = new VcOvfParseDescriptorParams();

 

descriptorSpec.locale = '';

descriptorSpec.deploymentOption = '';

 

var tempDir = System.getTempDirectory() ;

 

var fileReader = new FileReader(tempDir + '/ss.ovf') ;

 

fileReader.open() ;

var ovfDescriptor = fileReader.readAll();

var ovfD = String(ovfDescriptor);

ovfD = ovfD.trim();

fileReader.close();

 

System.log(ovfD);

var ovfInfo = ovfmanager.parseDescriptor(ovfD, descriptorSpec);

vRO Package: Is there a way to create a vRO workflow package without including the dependencies

$
0
0

Hi there,

 

I am trying to build a vRO package manually by including the workflow folder. But this includes all the other depedencies workflows to the package. Is there a way to avoid it? I know we can remove it manually from the package one by one. Thanks.

 

Regards,

RItu

Unable to add REST host

$
0
0

Hi All,

 

I have added the certificate to the orchestrator through "Orchestrator Configuration". "Add a REST Host" workflow fails with the msg "Provided url is invalid 'https://xxxxx.xxxxx.com'" with the exception "TypeError: Cannot call method "getCertificateInfo" of null (Workflow:Manage SSL certificates / Get URL certificates (item0)#14)". It was failing in "Manage SSL Certificate" of the flow.This workflow instantiates "RESTHostValidator" object. The API Explorer did not find this object. I am running VRO 6.0.3 with HTTP-REST plugin 1.0.9.2984798.

 

 

Any help appreciated.

vRA7 Event Broker Workflow Templates

$
0
0

Template workflows for vRA 7 Event Broker Subscriptions.  Both templates log all of the input payload/HashMap values, including any child HashMaps, recursively.

 

  • Basic workflow template:
    • This is suitable for lifecycle state changes
  • Approval workflow template
    • This is for connecting to external systems to determine Approval/Rejection
    • Includes additional cost information that is not part of the default payload
    • Includes error handling for all the noob mistakes I made as I tried out this new functionality!
    • You must configure the vcacCafeHost workflow Attribute to point to a vRA plug-in connection

 

For more info on using these, check out the vRA7 Extensibility Guide.


Technical Preview Version of VMware vCenter Orchestrator Plug-In for VMware vSphere 6.0.2

$
0
0

Technical Preview Version of VMware vCenter Orchestrator Plug-In for VMware vSphere 6.0.2

This is a patch release of the plug-in.

 

Version 6.0.1.2367143

  • Fixes related to backwards compatibility with vCenter Server 5.5.x

Version 6.0.2.2849464

  • Fix related to the workflow "Upload file to datastore"
  • Fixed NotificationThread and KillingThread thread leaks

Version 6.0.2.3225709

  • Fixed 'InvalidCollectorVersion' upon vCenter session restore.
  • Fixed FiltersManagerThread thread leak on configuration update.

Version 6.0.2.3431987

  • This version is compatible with vRO 6.0.3 and above
  • This version stores its configuration in vRO database and will delete VC.xml file on first boot when it is migrated in the database.
  • Fixed regression in synchronizing properties of vCenter inventory objects. The list of Virtual machines part of a ESXi is not updated after its initial load when new VMs are added to ESXi. Other object types are also affected.

Please note, that the attached plug-in is QE verified, but still not a final version.

vRealize Orchestrator - SSH Login root and Keyauthentication

$
0
0

Hey guys,

 

i´m really new to orchestrator and have a problem.

In our environment we use a public private key authentication to access our esxi-hosts with ssh.

Password authentication is disabled.

During our kickstart installation we install our public key on the esxi

 

When i connect manually with ssh to an esxi with putty i have to login as root and after that i have to provide the passphrase for the keyauthentication.

 

Is there any way to model this process in the orchestrator?

I Just found some ssh methods provided by vmware like "sshsession.connectwithpassword", "sshsession.connectwithidentity" and "sshsession.connectwithpasswordoridentity"

But none of theese works.

 

any suggestions?

thanks in advance.

Men & Mice - SetIPAMRecord

$
0
0

Hello all,

 

I've done a lot of testing and research, and I've been able to connect to Men & Mice with SOAP. I've been able to do a couple of queries, including registering a new DNS record with its PTR Record. So the record was free originally.

 

Not I'm trying to de-register a currently registered DNS Record with its PTR Record, when using VRO, it doesn't work. The SOAP Interface complains:

[2016-01-14 11:47:05.208] [I] Can't save the object because it was modified by another user.

<faultcode>soapenv:Client</faultcode>

<faultstring>Can't save the object because it was modified by another user.</faultstring>

<detail><mmfaultdetails><message>Can't save the object because it was modified by another user.</message><errorcode>16552</errorcode></mmfaultdetails></detail>

(Dynamic Script Module name : invokeSOAPOperation#26)

 

When I'm doing the same SetIPAMRecord on the same record with SOAPUI, it works fine. I've looked at the query that VRO sends to M&M its seems fine.

 

I have no clue why its saying that all the time, I've looked at the doc of Men & Mice, all the required parameters are provided.

 

Anyone else had problem with SetIPAMRecord ?

 

Thanks,

vRealize Orchestrator Appliance 6.0.3 and vCenter 5.5 U3/vCloud Director 5.6

$
0
0

Hi everyone,

I have a couple questions about compatibility between vRO 6.0.3 and vCenter 5.5 and vCloud Director 5.6:

 

In vCenter Orchestrator 5.5.2 I have plugin to connect vCO to vCenter (version

vro2.jpg

 

 

2.     Another question is about vSphere Web Client integration with vRO. To do this properly first I must use SSO Authentication mode? With LDAP Authentication it won't work?

3.     Someone know if vRO is working with vCloud Director 5.6 ? I only found 5.5.1.2 plugin, but using this plugin I can't connect to vCD (in vCO 5.5.2 I don't have any problems).

 




vRO 7 and the vAPI plugin. Anyone get this working?

$
0
0

I'm trying to configure a vAPI endpoint in vRO 7 and I seem to be stuck.  The first step is to run the "Import vAPI Metamodel" workflow.  No matter what I attempt I can't seem to get this to work.  We have a single vCenter with an external psc.  From what I can tell in the documentation the vAPI endpoint should be https://<vCenterHostname>/rest .  I can navigate to the endpoint and list out the services and navigate around the api but the plugin doesn't seem happy with anything I am giving it.  I get these errors:

 

item: 'Import vAPI metamodel/item1', state: 'failed', business state: 'null', exception: 'HTTP response with status code 404 (enable debug logging for details) (Workflow:Import vAPI metamodel / Import vAPI metamodel (item1)#4)'

workflow: 'Import vAPI metamodel' (9eee7150-b606-46c8-8caa-5b5d927ff5bc)

|  'input': name=endpointUrl type=string value=https://vc-dev-lascolo.qualcomm.com/rest

Viewing all 10285 articles
Browse latest View live


Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>