Error: "This version of vCenter Server does not support deploy OVF Template using this version of vSphere Web Client" when deploying any OVF/OVA
search cancel

Error: "This version of vCenter Server does not support deploy OVF Template using this version of vSphere Web Client" when deploying any OVF/OVA

book

Article ID: 314264

calendar_today

Updated On:

Products

VMware vCenter Server

Issue/Introduction

This article provides steps to re-register Content Library Service.

Symptoms:
  • Cannot import OVF/OVA files using the Flash or HTML5 Client
  • When deploying any OVF, you see the following error in the Web Client and H5 Client:
"This version of vCenter Server does not support deploy OVF Template using this version of vSphere Web Client. To Deploy OVF Template, login with version 6.5.0.0 of vSphere Web Client."
  • In the /var/log/vmware/vapi/endpoint/endpoint.log file, you see entries similar to:
2018-06-14T08:57:24.835-08:00 | WARN | jetty-default-31 | ProviderAggregation | Could not find provider for service 'com.vmware.vcenter.ovf.capability'
2018-06-14T08:57:59.255-08:00 | WARN | jetty-default-32 | ProviderAggregation | Could not find provider for service 'com.vmware.vcenter.ovf.capability'
2018-06-14T08:58:39.078-08:00 | WARN | jetty-default-34 | ProviderAggregation | Could not find provider for service 'com.vmware.vcenter.ovf.capability'
2018-06-14T08:59:31.011-08:00 | WARN | jetty-default-34 | ProviderAggregation | Could not find provider for service 'com.vmware.vcenter.ovf.capability'

 

Note: The preceding log excerpts are only examples. Date, time, and environmental variables may vary depending on your environment.


Environment

VMware vCenter Server Appliance 6.7.x
VMware vCenter Server 6.5.x
VMware vCenter Server 6.7.x
VMware vCenter Server Appliance 6.5.x

Cause

This issue occurs because the Content Library Service serviceID is not registered.

Resolution

To resolve the issue:
  1. Confirm content library registration is missing by running the following command:
/usr/lib/vmidentity/tools/scripts/lstool.py list --no-check-cert --url http://localhost:7080/lookupservice/sdk --type cis.cls

 

Note: You should see <java.lang.NullPointerException> at the end of the command output.

  1. Stop the content library service:
service-control --stop vmware-content-library
  1. Back up cls_service_cisreg.spec file:
cd /etc/vmware-content-library && cp cls_service_cisreg.spec cls_service_cisreg.spec.bk && cd -
  1. Obtain the Content Library Service serviceID from cls_service_cisreg.spec:
 grep 'cmreg.serviceid' /etc/vmware-content-library/cls_service_cisreg.spec

Note: Copy the entire output of the grep command for later use.

 

Example:

cmreg.serviceid=dcc87805-2651-c4e0-977b-9cc2265d6a91
  1. Back up the cis_register.py and content-library-register.py files:
    • cd /usr/lib/vmware-content-library/install_lib && cp cis_register.py cis_reregister.py && cd –
    • cd /usr/lib/vmware-content-library/firstboot && cp content-library-firstboot.py content-library-reregister.py && cd – 
  1. Modify the /usr/lib/vmware-content-library/install_lib/cis_reregister.py file:
Change the following section (updates indicated in red)

For vCenter Server 6.5:

From:

def registerUserAndService(self, user_name, user_id, service_spec):
        """
        # Register user and service (include reverse proxy) through cisreg.
        @param service_spec: the service object defined in vdc_services_spec.json
        """
        service_name = service_spec["service-name"]
        sso_user_spec = self.get_solution_user_spec(user_name, user_id)
        cisreg_spec = self.generate_cisreg_service_spec(service_spec, CISREG_SERVICE_SPEC_TEMPLATE)
        rp_spec = self.generate_reverse_proxy_spec(service_spec, REVERSE_PROXY_SPEC_TEMPLATE)
        service_cisreg = sso_user_spec + cisreg_spec + rp_spec
        keystore = VecsKeyStore(service_name)
        svcinfo = cloudvm_sso_cm_register(
            keystore, self._generate_cisreg_service_spec_file(service_name, service_cisreg), service_name)

To:

def registerUserAndService(self, user_name, user_id, service_spec):
        """
        # Register user and service (include reverse proxy) through cisreg.
        @param service_spec: the service object defined in vdc_services_spec.json
        """
        service_name = service_spec["service-name"]
        sso_user_spec = self.get_solution_user_spec(user_name, user_id)
        cisreg_spec = self.generate_cisreg_service_spec(service_spec, CISREG_SERVICE_SPEC_TEMPLATE)
        rp_spec = self.generate_reverse_proxy_spec(service_spec, REVERSE_PROXY_SPEC_TEMPLATE)
        service_cisreg = sso_user_spec + cisreg_spec + rp_spec + "cmreg.serviceid=dcc87805-2651-c4e0-977b-9cc2265d6a91"
        keystore = VecsKeyStore(service_name)
        svcinfo = cloudvm_sso_cm_register(
            keystore, self._generate_cisreg_service_spec_file(service_name, service_cisreg), service_name, regOp=’register’)


For vCenter Server 6.7:
From:

def registerUserAndService(self, user_name, user_id, service_spec):
        """
        # Register user and service (include reverse proxy) through cisreg.
        @param service_spec: the service object defined in vdc_services_spec.json
        """
        service_name = service_spec["service-name"]
        sso_user_spec = self.get_solution_user_spec(user_name, user_id)
        cisreg_spec = self.generate_cisreg_service_spec(service_spec, CISREG_SERVICE_SPEC_TEMPLATE)
        rp_spec = self.generate_reverse_proxy_spec(service_spec, REVERSE_PROXY_SPEC_TEMPLATE)
        service_cisreg = sso_user_spec + cisreg_spec + rp_spec
        keystore = VecsKeyStore(service_name)
        svcinfo = cloudvm_sso_cm_register(
            keystore, self._generate_cisreg_service_spec_file(service_name, service_cisreg), service_name)

To:

def registerUserAndService(self, user_name, user_id, service_spec):
        """
        # Register user and service (include reverse proxy) through cisreg.
        @param service_spec: the service object defined in vdc_services_spec.json
        """
        service_name = service_spec["service-name"]
        sso_user_spec = self.get_solution_user_spec(user_name, user_id)
        cisreg_spec = self.generate_cisreg_service_spec(service_spec, CISREG_SERVICE_SPEC_TEMPLATE)
        rp_spec = self.generate_reverse_proxy_spec(service_spec, REVERSE_PROXY_SPEC_TEMPLATE)
        service_cisreg = sso_user_spec + cisreg_spec + rp_spec + "cmreg.serviceid=dcc87805-2651-c4e0-977b-9cc2265d6a91"
        keystore = VecsKeyStore(service_name)
        svcinfo = cloudvm_sso_cm_register(
            keystore, self._generate_cisreg_service_spec_file(service_name, service_cisreg), service_name, regOp=’register’,

  1. Modify the /usr/lib/vmware-content-library/firstboot/content-library-reregister.py file:
Change the following section (updates indicated in red)

From:

def Main():
    log('CLS firstboot started')
    rc = 1
    vdc_fb = VdcSvcFB('content-library')
    vdc_fb.set_vmon_registered(install_common.VDCS_VMON_NAME)
    ex = None
    try:
        # TODO: We may need to change the component name, but now we have to use "vdcs" which the component name defined in vpxlin.
        # Note: This name must be as same as VCDE_COMPONENT_NAME in common_install.py
        if vdc_fb.get_action() == FBActions.FIRSTBOOT:
            vdc_fb.prepare_install()
 
            # TODO: we need to tell if this is upgrade, and for upgrade
            # (inplace, or migration based,  run the in-place upgrade script.
            vdc_fb.register_cis()
            vdc_fb.setup_vdc()
            vdc_fb.start_service()
        elif vdc_fb.get_action() == FBActions.START:
            # exiting maintenance mode
            # TODO: re-register CM?
            vdc_fb.start_service()

To:

def Main():
    log('CLS firstboot started')
    rc = 1
    vdc_fb = VdcSvcFB('content-library')
    vdc_fb.set_vmon_registered(install_common.VDCS_VMON_NAME)
    ex = None
    try:
        # TODO: We may need to change the component name, but now we have to use "vdcs" which the component name defined in vpxlin.
        # Note: This name must be as same as VCDE_COMPONENT_NAME in common_install.py
        if vdc_fb.get_action() == FBActions.FIRSTBOOT:
            vdc_fb.prepare_install()
 
            # TODO: we need to tell if this is upgrade, and for upgrade
            # (inplace, or migration based,  run the in-place upgrade script.
            vdc_fb.register_cis()
            pass # vdc_fb.setup_vdc()
            pass # vdc_fb.start_service()
        elif vdc_fb.get_action() == FBActions.START:
            # exiting maintenance mode
            # TODO: re-register CM?
            pass # vdc_fb.start_service()

  1. Define the install parameter vmdir.password (use single quotes around the password if there are any special characters):
install-parameter vmdir.password -s <administrator-password>
  1.  Define the install parameter rhttpproxy.cert:
 install-parameter rhttpproxy.cert -s /etc/vmware-rhttpproxy/ssl/rui.crt
  1. Run the content-library-reregister.py script:
 python /usr/lib/vmware-content-library/firstboot/content-library-reregister.py
  1. Verify that the registration is complete:
 /usr/lib/vmidentity/tools/scripts/lstool.py list --no-check-cert --url http://localhost:7080/lookupservice/sdk --type cis.cls

 

Note: You should now see the service registration and SSL Trust for cis.cls.

  1. Start the Content Library Service:
service-control --start vmware-content-library
  1. Log out and log in to the VC Web Client to verify if OVF/OVA deploy succeeds.