Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
if (component is mandatory to OSS/non-OSS ) {


    if( component shares common configuration in both OSS and non-OSS distributions ) {
        put it in applicationContext.xml.in
    } else {
        put it in both componentContext.xml and nonossComponentContext.xml.in
    }


} else {


    // optional component
    if(component is for OSS only)
        put it in componentContext.xml
    else if(component is for non-OSS only)
        put it in nonossComponentContext.xml
    else
        put in both componentContext.xml.in and nonossComponentContext.xml.in

}

2. How to declare to be a CloudStack component

...

Code Block
<!--=======================================================================================================-->
<!--                                                                                                       -->
<!--                           Module-basis OSS/non-OSS Common components                                  -->
<!--                                                                                                       -->
<!--=======================================================================================================-->

  <!--
    Baremetal components
  -->

<!--
  <bean id="BareMetalDhcp" class="com.cloud.baremetal.networkservice.BaremetalDhcpElement">
    <property name="name" value="BareMetalDhcp"/>
  </bean>
  <bean id="BareMetalPxe" class="com.cloud.baremetal.networkservice.BaremetalPxeElement">
    <property name="name" value="BareMetalPxe"/>
  </bean>
  <bean id="BareMetalUserdata" class="com.cloud.baremetal.networkservice.BaremetalUserdataElement">
      <property name="name" value="BareMetalUserdata"/>
  </bean>

  <bean id="BareMetalTemplateAdapter" class="com.cloud.baremetal.manager.BareMetalTemplateAdapter" />

  <bean id="BareMetalDiscoverer" class="com.cloud.baremetal.manager.BareMetalDiscoverer">
    <property name="name" value="Bare Metal Agent"/>
  </bean>

  <bean id="BareMetalPlanner" class="com.cloud.baremetal.manager.BareMetalPlanner">
    <property name="name" value="BareMetal Fit"/>
  </bean>

  <bean id="BaremetalGuru" class="com.cloud.baremetal.manager.BareMetalGuru">
    <property name="name" value="BaremetalGuru"/>
  </bean>

  <bean id="BaremetalPlannerSelector" class="com.cloud.baremetal.manager.BaremetalPlannerSelector">
    <property name="name" value="BaremetalPlannerSelector"/>
  </bean>

  <bean id="BaremetalManager" class="com.cloud.baremetal.manager.BaremetalManagerImpl"/>
  <bean id="BaremetalDhcpManager" class="com.cloud.baremetal.networkservice.BaremetalDhcpManagerImpl"/>
  <bean id="BaremetalKickStartPxeService" class="com.cloud.baremetal.networkservice.BaremetalKickStartServiceImpl"/>
  <bean id="BaremetalPingPxeService" class="com.cloud.baremetal.networkservice.BareMetalPingServiceImpl" />
  <bean id="BaremetalPxeManager" class="com.cloud.baremetal.networkservice.BaremetalPxeManagerImpl" />

  <bean id="BAREMETAL" class="org.apache.cloudstack.storage.image.format.BAREMETAL" />
  <bean id="baremetalDhcpDaoImpl" class="com.cloud.baremetal.database.BaremetalDhcpDaoImpl" />
  <bean id="baremetalPxeDaoImpl" class="com.cloud.baremetal.database.BaremetalPxeDaoImpl" />
-->

4.8 When to or not to use auto-wiring with @Inject

  • If the subject component is mandatory for both CloudStack OSS and non-OSS distributions, safe to use @Inject to auto-wire the component.
  • If the subject component is optional, either optional to OSS distribution, or to non-OSS distribution or both distributions, avoid using auto-wiring. Replace it with getter/setter in XML configuration. In this way, CloudStack admins can safely remove the optional component from XML configuration without causing run-time wiring problems.

5. Component lifecycle

In CloudStack, some components are lifecyle sensitive, examples are those manager objects, adapter objects. To indicate the desire to be life-cycle management aware, a component needs to implement interface ComponentLifecycle. ComponentLifecycle currently defines 6 run-levels to represent system startup cycles.

...