HWSSettings.html #11

  • //
  • guest/
  • doug_scheirer/
  • helix-web-services/
  • main/
  • build/
  • doc/
  • helix_web_services/
  • HWSSettings.html
  • View
  • Commits
  • Open Download .zip Download (19 KB)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
  Class: HWSSettings
  
    &mdash; Documentation by YARD 0.8.7.6
  
</title>

  <link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />

  <link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />

<script type="text/javascript" charset="utf-8">
  hasFrames = window.top.frames.main ? true : false;
  relpath = '';
  framesUrl = "frames.html#!HWSSettings.html";
</script>


  <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>

  <script type="text/javascript" charset="utf-8" src="js/app.js"></script>


  </head>
  <body>
    <div id="header">
      <div id="menu">
  
    <a href="_index.html">Index (H)</a> &raquo;
    
    
    <span class="title">HWSSettings</span>
  

  <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
</div>

      <div id="search">
  
    <a class="full_list_link" id="class_list_link"
        href="class_list.html">
      Class List
    </a>
  
    <a class="full_list_link" id="method_list_link"
        href="method_list.html">
      Method List
    </a>
  
    <a class="full_list_link" id="file_list_link"
        href="file_list.html">
      File List
    </a>
  
</div>
      <div class="clear"></div>
    </div>

    <iframe id="search_frame"></iframe>

    <div id="content"><h1>Class: HWSSettings
  
  
  
</h1>

<dl class="box">
  
    <dt class="r1">Inherits:</dt>
    <dd class="r1">
      <span class="inheritName">Object</span>
      
        <ul class="fullTree">
          <li>Object</li>
          
            <li class="next">HWSSettings</li>
          
        </ul>
        <a href="#" class="inheritanceTree">show all</a>
      
      </dd>
    
  
  
    
  
    
  
  
  
    <dt class="r2 last">Defined in:</dt>
    <dd class="r2 last">lib/hws_settings.rb</dd>
  
</dl>
<div class="clear"></div>

<h2>Overview</h2><div class="docstring">
  <div class="discussion">
    
<p>A Rack middleware application that creates a single configuration for Helix
Web Services.</p>

<p>Most web services are modular Sinatra applications, which does come with
it&#39;s own settings mechanism. We should try to avoid those settings in
most cases. Perhaps only if those settings are only relevant to the logic
directly within the Sinatra app.</p>

<p>Many other settings, like the port setting of the associated Helix
Versioning Engine, should be exposed and overridable by the client
application. These settings should be defined here.</p>

<p>This class provides middleware that will inject an
<code>hws_settings</code> object into each request. This
<code>hws_settings</code> object is seeded by values declared on this
class. When the system starts, our system config file is read in, and
default system values are overridden. On any request, these settings can be
overridden by the user.</p>

<p>Additionally, there are “system” settings that are only overridable from
the system config file. Client classes should reference this class
directly: HWSSettings.system.</p>

<h2 id="label-Naming+Conventions">Naming Conventions</h2>

<p>Use uppercase letters, numbers, or underscores only.</p>

<h2 id="label-HTTP+Header+Override+Syntax">HTTP Header Override Syntax</h2>

<p>We allow per-request overrides of settings via HTTP headers.</p>

<p>The key format of the custom setting is:</p>

<p><code>X-PERFORCE-HELIX_WEB_SERVICES-{key}</code></p>

<p>For example:</p>

<pre class="code ruby"><code class="ruby">X-PERFORCE-HELIX_WEB_SERVICES-P4HOST: perforce.mycompany.com
X-PERFORCE-HELIX_WEB_SERVICES-P4CHARSET: auto</code></pre>

<p>Please note that headers will be converted by Rack to all uppercase, hence
our naming conventions.</p>

<h2 id="label-System+Config+File">System Config File</h2>

<p>The system configuration is stored in the
<code>/etc/perforce/helix_web_services.conf</code> file. This is a YAML
file, and we override any locally defined variables with values found in
this file. ()If you specify a value in this file we do not locally define,
we ignore it.)</p>

<p>Example values in /etc/perforce/helix_web_services.conf:</p>

<pre class="code ruby"><code class="ruby">P4HOST: &#39;perforce.mycompany.com&#39;
P4PORT: &#39;9991&#39;</code></pre>


  </div>
</div>
<div class="tags">
  

</div>
  <h2>Constant Summary</h2>
  
    <dl class="constants">
      
        <dt id="SYSTEM_CONFIG_PATH-constant" class="">SYSTEM_CONFIG_PATH =
          
        </dt>
        <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>/etc/perforce/helix_web_services.conf</span><span class='tstring_end'>&#39;</span></span></pre></dd>
      
    </dl>
  







  
    <h2>
      Class Method Summary
      <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
    </h2>

    <ul class="summary">
      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#overrides-class_method" title="overrides (class method)">+ (Object) <strong>overrides</strong> </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'>
<p>Return the system overrides in our system configuration file.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#settings-class_method" title="settings (class method)">+ (Object) <strong>settings</strong> </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'>
<p>Returns baseline settings with system overrides applied.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#settings_handle-class_method" title="settings_handle (class method)">+ (Object) <strong>settings_handle</strong> </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'>
<p>You can tweak the default settings directly here in code.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#system-class_method" title="system (class method)">+ (Object) <strong>system</strong> </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'>
<p>Returns our system settings overridden by local configuration in overrides.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#system_handle-class_method" title="system_handle (class method)">+ (Object) <strong>system_handle</strong> </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'>
<p>In case your code wants to edit the system classes directly.</p>
</div></span>
  
</li>

      
    </ul>
  
    <h2>
      Instance Method Summary
      <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
    </h2>

    <ul class="summary">
      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#call-instance_method" title="#call (instance method)">- (Object) <strong>call</strong>(env) </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'></div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#initialize-instance_method" title="#initialize (instance method)">- (HWSSettings) <strong>initialize</strong>(app) </a>
    

    
  </span>
  
  
    <span class="note title constructor">constructor</span>
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'>
<p>A new instance of HWSSettings.</p>
</div></span>
  
</li>

      
    </ul>
  

<div id="constructor_details" class="method_details_list">
  <h2>Constructor Details</h2>
  
    <div class="method_details first">
  <h3 class="signature first" id="initialize-instance_method">
  
    - (<tt><span class='object_link'><a href="" title="HWSSettings (class)">HWSSettings</a></span></tt>) <strong>initialize</strong>(app) 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    
<p>Returns a new instance of HWSSettings</p>


  </div>
</div>
<div class="tags">
  

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


172
173
174</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/hws_settings.rb', line 172</span>

<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_app'>app</span><span class='rparen'>)</span>
  <span class='ivar'>@app</span> <span class='op'>=</span> <span class='id identifier rubyid_app'>app</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
  
</div>


  <div id="class_method_details" class="method_details_list">
    <h2>Class Method Details</h2>

    
      <div class="method_details first">
  <h3 class="signature first" id="overrides-class_method">
  
    + (<tt>Object</tt>) <strong>overrides</strong> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    
<p>Return the system overrides in our system configuration file.</p>


  </div>
</div>
<div class="tags">
  

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


158
159
160</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/hws_settings.rb', line 158</span>

<span class='kw'>def</span> <span class='id identifier rubyid_overrides'>overrides</span>
  <span class='kw'>return</span> <span class='ivar'>@overrides</span> <span class='op'>||=</span> <span class='id identifier rubyid_init_overrides'>init_overrides</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="settings-class_method">
  
    + (<tt>Object</tt>) <strong>settings</strong> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    
<p>Returns baseline settings with system overrides applied.</p>

<p>This is a copy of state. If you want to alter the default settings in code
instead of via config files, use the <code>settings_handle</code></p>


  </div>
</div>
<div class="tags">
  

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


120
121
122
123
124
125
126
127
128</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/hws_settings.rb', line 120</span>

<span class='kw'>def</span> <span class='id identifier rubyid_settings'>settings</span>
  <span class='id identifier rubyid_s'>s</span> <span class='op'>=</span> <span class='const'>OpenStruct</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='ivar'>@settings</span><span class='rparen'>)</span>
  <span class='id identifier rubyid_s'>s</span><span class='period'>.</span><span class='id identifier rubyid_each_pair'>each_pair</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid__'>_</span><span class='op'>|</span>
    <span class='kw'>if</span> <span class='id identifier rubyid_overrides'>overrides</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span>
      <span class='id identifier rubyid_s'>s</span><span class='lbracket'>[</span><span class='id identifier rubyid_key'>key</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_overrides'>overrides</span><span class='lbracket'>[</span><span class='id identifier rubyid_key'>key</span><span class='rbracket'>]</span>
    <span class='kw'>end</span>
  <span class='kw'>end</span>
  <span class='id identifier rubyid_s'>s</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="settings_handle-class_method">
  
    + (<tt>Object</tt>) <strong>settings_handle</strong> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    
<p>You can tweak the default settings directly here in code.</p>


  </div>
</div>
<div class="tags">
  

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


131
132
133</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/hws_settings.rb', line 131</span>

<span class='kw'>def</span> <span class='id identifier rubyid_settings_handle'>settings_handle</span>
  <span class='ivar'>@settings</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="system-class_method">
  
    + (<tt>Object</tt>) <strong>system</strong> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    
<p>Returns our system settings overridden by local configuration in overrides.</p>

<p>This is a <em>copy</em> of the class system settings, suitable for editing
and passing on.</p>

<p>See the official guide for declared options.</p>


  </div>
</div>
<div class="tags">
  

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


141
142
143
144
145
146
147
148
149</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/hws_settings.rb', line 141</span>

<span class='kw'>def</span> <span class='id identifier rubyid_system'>system</span>
  <span class='id identifier rubyid_s'>s</span> <span class='op'>=</span> <span class='const'>OpenStruct</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='ivar'>@system</span><span class='rparen'>)</span>
  <span class='id identifier rubyid_s'>s</span><span class='period'>.</span><span class='id identifier rubyid_each_pair'>each_pair</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid__'>_</span><span class='op'>|</span>
    <span class='kw'>if</span> <span class='id identifier rubyid_overrides'>overrides</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span>
      <span class='id identifier rubyid_s'>s</span><span class='lbracket'>[</span><span class='id identifier rubyid_key'>key</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_overrides'>overrides</span><span class='lbracket'>[</span><span class='id identifier rubyid_key'>key</span><span class='rbracket'>]</span>
    <span class='kw'>end</span>
  <span class='kw'>end</span>
  <span class='id identifier rubyid_s'>s</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="system_handle-class_method">
  
    + (<tt>Object</tt>) <strong>system_handle</strong> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    
<p>In case your code wants to edit the system classes directly. Typically used
for test initialization.</p>


  </div>
</div>
<div class="tags">
  

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


153
154
155</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/hws_settings.rb', line 153</span>

<span class='kw'>def</span> <span class='id identifier rubyid_system_handle'>system_handle</span>
  <span class='ivar'>@system</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
  </div>

  <div id="instance_method_details" class="method_details_list">
    <h2>Instance Method Details</h2>

    
      <div class="method_details first">
  <h3 class="signature first" id="call-instance_method">
  
    - (<tt>Object</tt>) <strong>call</strong>(env) 
  

  

  
</h3><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


176
177
178
179
180
181
182
183
184
185
186
187
188
189
190</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/hws_settings.rb', line 176</span>

<span class='kw'>def</span> <span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='id identifier rubyid_env'>env</span><span class='rparen'>)</span>
  <span class='id identifier rubyid_hws_settings'>hws_settings</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_settings'>settings</span>

  <span class='comment'># TODO: need to whitelist P4PORT for cloud, arbitrary perforce servers not supported
</span>  <span class='id identifier rubyid_env'>env</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='op'>|</span>
    <span class='id identifier rubyid_match'>match</span> <span class='op'>=</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^HTTP_X_PERFORCE_HELIX_WEB_SERVICES_(.*)$</span><span class='regexp_end'>/</span></span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span>
    <span class='kw'>if</span> <span class='id identifier rubyid_match'>match</span>
      <span class='id identifier rubyid_hws_settings'>hws_settings</span><span class='lbracket'>[</span><span class='id identifier rubyid_match'>match</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span>
    <span class='kw'>end</span>
  <span class='kw'>end</span>

  <span class='id identifier rubyid_env'>env</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>hws_settings</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_hws_settings'>hws_settings</span>

  <span class='ivar'>@app</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='id identifier rubyid_env'>env</span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
  </div>

</div>

    <div id="footer">
  Generated on Mon Oct 12 22:20:52 2015 by
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
  0.8.7.6 (ruby-2.2.3).
</div>

  </body>
</html>
# Change User Description Committed
#11 16275 Doug Scheirer Merge from main
#10 16196 Doug Scheirer Merge from main
#9 16148 Doug Scheirer Merge from main
#8 16114 Doug Scheirer Merge from main
#7 16079 Doug Scheirer Merge from main
#6 16014 Doug Scheirer Merge down from main
#5 15884 Doug Scheirer Merge from main
#4 15868 Doug Scheirer Merge from main
#3 15845 Doug Scheirer Integ from main
#2 15715 Doug Scheirer merge changes from main
#1 15688 Doug Scheirer Populate -o //guest/perforce_software/helix-web-services/...
//guest/doug_scheirer/helix-web-services/....
//guest/perforce_software/helix-web-services/main/build/doc/helix_web_services/HWSSettings.html
#32 15676 tjuricek HWS/NOARCH/2015.1.main/201509092205
#31 15589 tjuricek Update path to test output and update docs.
#30 15542 tjuricek Add spaces to our basic 'component encode' mechanism, and use it for HVE project IDs.

In general, this will make the HVE IDs a bit more readable.
#29 15517 tjuricek Do not require changelist ID for submitting Helix Sync pending changelists.
#28 15499 tjuricek Naive implementation of helix sync project submit for "helix versioning engine projects".
#27 15487 tjuricek Add basic ability to create pending changelists for helix sync projects.
#26 15479 tjuricek Added a basic "HVE project" implementation for creating clients.
#25 15447 tjuricek Add simple Example application to list "projects" in a HVE instance.

Qt's a little weird to follow, so I may have to find a different kind of example to write. It does work, however.
#24 15240 tjuricek Set api level via request path on all Helix Versioning Engine methods.

This will allow migration of applications to different P4D versions. Our internal methods (like project API) should attempt to handle backward compatibility similarly.

P4WEBAPI-118
#23 15228 tjuricek Revise triggers implementation, tests, and documentation.
#22 15227 tjuricek Revise implementation, tests, and documentation for protections management.

Remove some specs I will not be revising from the helix_web_services project.
#21 15225 tjuricek Revise counter implementation, tests, and documentation

Wasn't available in the Ruby client before, so, it's now available.
#20 15222 tjuricek Revise server specs testing and documentation.

Note: also fixed issues with setting P4PORT via headers. For whatever reason, the host setting doesn't seem to work like I expect it to, though P4PORT works just fine.
#19 15211 tjuricek Implement tests and documentation for label spec management.
#18 15210 tjuricek Implement tests and documentation for job spec management.
#17 15209 tjuricek Implement tests and documentation for group spec management.
#16 15208 tjuricek Revise 'command' implementation, tests, and documentaiton.

This includes a change from a command blacklist to a whitelist. See P4WEBAPI-21
#15 15205 tjuricek Implemented tests and documentation for depot spec editing.
#14 15189 tjuricek Update files implementation, testing, and documentation.
#13 15185 tjuricek Update user spec management implementation, tests, and documentation.
#12 15144 tjuricek Setup stream spec tests and documentation.

Also revised the documentation folder http_p4_web_api -> helix_versioning_engine
#11 15132 tjuricek Provde a basic submit -e mechanism on classic perforce workspaces.
#10 15110 tjuricek Revise changes methods for new p4 connection handling, add server specs, remove model references in client, and update asciidoc documentation.
#9 15099 tjuricek Revise project services to be our simple 'container' for other systems.
#8 15098 tjuricek Revised project services to GET-only forms.

With Helix Sync revising to integrate purely with Helix Cloud, this is the only thing we can reasonably define.
#7 15090 tjuricek Update _proposed_ API for project services.

This is *very likely* to change, and will not be implemented until reviewed.
#6 15078 tjuricek clients spec method revisions

Updated some other documentation.
#5 15077 tjuricek Add new 'model' technique, revised branch spec operations, test Auth::Middleware.

The Ruby client now does *not* strictly type anything, but extends OpenStruct with helper methods to help deal with inconsistent data formats.
See the OpenModel class documentation for more details.

The Auth::Middleware class is also *finally* implemented as well. This does not take into account all possible variations of server behavior (yet), but that will happen in follow-up work.
#4 15073 tjuricek Update Auth::Middleware and add spec
#3 15053 tjuricek Revise the client API to use the new login method.

The current specs will need to be revised since data normalization is moving out of the server and into the client.
#2 15038 tjuricek Document 'login' auth method and client programming overview.
#1 15032 tjuricek Starting config and doc revisions.
System is now broken while revisions underway.

Configuration of the p4d connection is now done via a single HWSSettings middleware object injected into the Rack env.

The HWSP4Cleanup middleware now cleans up any p4 injected into the Rack env.

The Auth::App class now mostly just contains one method to generate a p4 ticket. /auth/v1/login.

Added yard documentation for the main project.

Yard docs have been reconfigured to dump into build/ directories. This should probably be done with each release. Hm...

The top level rake file contains a task, 'all:doc', to update our documentation. This should probably be run for each checkin. Hm...

Specs are now using Rack::Test on top of a 'live' p4d. I'd suggest you still use the p4util mechanism, which now dumps to a /tmp folder, so we can safely add P4IGNORE rules back into your local .p4config file.

Old 'perforce' application now called 'helix_versioning_engine'.

Removing cache data. Helix Sync may be slow. It may also get axed. We'll see.