def __present(self, data):
        ethernet_network = self.__get_by_name(data)

        changed = False

        if "newName" in data:
            data["name"] = data.pop("newName")

        bandwidth = data.pop('bandwidth', None)

        if not ethernet_network:
            ethernet_network = self.oneview_client.ethernet_networks.create(
                data)
            changed = True
            msg = ETHERNET_NETWORK_CREATED
        else:
            merged_data = ethernet_network.copy()
            merged_data.update(data)

            if not resource_compare(ethernet_network, merged_data):
                ethernet_network = self.oneview_client.ethernet_networks.update(
                    merged_data)
                changed = True
                msg = ETHERNET_NETWORK_UPDATED
            else:
                msg = ETHERNET_NETWORK_ALREADY_EXIST

        if bandwidth:
            if self.__update_connection_template(ethernet_network,
                                                 bandwidth)[0]:
                if not changed:
                    changed = True
                    msg = ETHERNET_NETWORK_UPDATED

        return changed, msg, dict(ethernet_network=ethernet_network)
示例#2
0
    def __present(self, data, resource):

        changed = False
        msg = ''

        if "newName" in data:
            data["name"] = data.pop("newName")

        self.__replace_name_by_uris(data)

        if not resource:
            resource = self.oneview_client.logical_switch_groups.create(data)
            changed = True
            msg = LOGICAL_SWITCH_GROUP_CREATED
        else:
            merged_data = resource.copy()
            merged_data.update(data)

            if not resource_compare(resource, merged_data):
                # update resource
                changed = True
                resource = self.oneview_client.logical_switch_groups.update(merged_data)
                msg = LOGICAL_SWITCH_GROUP_UPDATED
            else:
                msg = LOGICAL_SWITCH_GROUP_ALREADY_UPDATED

        return changed, msg, dict(logical_switch_group=resource)
示例#3
0
    def __present(self, data, resource):

        changed = False
        msg = ''

        if not resource:
            resource = self.oneview_client.storage_volume_templates.create(
                data)
            changed = True
            msg = STORAGE_VOLUME_TEMPLATE_CREATED
        else:

            merged_data = resource.copy()
            merged_data.update(data)

            if not resource_compare(resource, merged_data):
                # update resource
                changed = True
                resource = self.oneview_client.storage_volume_templates.update(
                    merged_data)
                msg = STORAGE_VOLUME_TEMPLATE_UPDATED
            else:
                msg = STORAGE_VOLUME_TEMPLATE_ALREADY_UPDATED

        return changed, msg, dict(storage_volume_template=resource)
示例#4
0
    def __present(self, data, resource):

        changed = False

        if "newName" in data:
            data["name"] = data.pop("newName")

        if not resource:
            resource = self.oneview_client.power_devices.add(data)
            changed = True
            msg = POWER_DEVICE_ADDED
        else:
            merged_data = resource.copy()
            merged_data.update(data)

            if not resource_compare(resource, merged_data):
                # update resource
                changed = True
                resource = self.oneview_client.power_devices.update(
                    merged_data)
                msg = POWER_DEVICE_UPDATED
            else:
                msg = POWER_DEVICE_ALREADY_PRESENT

        return changed, msg, dict(power_device=resource)
    def __present(self, data):
        resource = self.__get_resource(data)
        changed = False
        msg = ''

        if not resource:
            if 'credentials' not in data:
                raise Exception(STORAGE_SYSTEM_CREDENTIALS_MANDATORY)
            resource = self.oneview_client.storage_systems.add(data['credentials'])
            changed = True
            msg = STORAGE_SYSTEM_ADDED

        merged_data = resource.copy()
        merged_data.update(data)

        if 'credentials' in merged_data and 'password' in merged_data['credentials']:
            # remove password, it cannot be used in comparison
            del merged_data['credentials']['password']

        if not resource_compare(resource, merged_data):
            # update the resource
            resource = self.oneview_client.storage_systems.update(merged_data)
            if not changed:
                changed = True
                msg = STORAGE_SYSTEM_UPDATED
        else:
            msg = STORAGE_SYSTEM_ALREADY_UPDATED

        return changed, msg, dict(storage_system=resource)
    def __present(self, data):
        ethernet_network = self.__get_by_name(data)

        changed = False

        if "newName" in data:
            data["name"] = data.pop("newName")

        bandwidth = data.pop('bandwidth', None)

        if not ethernet_network:
            ethernet_network = self.oneview_client.ethernet_networks.create(data)
            changed = True
            msg = ETHERNET_NETWORK_CREATED
        else:
            merged_data = ethernet_network.copy()
            merged_data.update(data)

            if not resource_compare(ethernet_network, merged_data):
                ethernet_network = self.oneview_client.ethernet_networks.update(merged_data)
                changed = True
                msg = ETHERNET_NETWORK_UPDATED
            else:
                msg = ETHERNET_NETWORK_ALREADY_EXIST

        if bandwidth:
            if self.__update_connection_template(ethernet_network, bandwidth)[0]:
                if not changed:
                    changed = True
                    msg = ETHERNET_NETWORK_UPDATED

        return changed, msg, dict(ethernet_network=ethernet_network)
    def __present(self, data, resource):

        changed = False
        msg = ''

        if "newName" in data:
            data["name"] = data.pop("newName")

        self.__replace_name_by_uris(data)

        if not resource:
            resource = self.oneview_client.datacenters.add(data)

            changed = True
            msg = DATACENTER_ADDED
        else:
            merged_data = resource.copy()
            merged_data.update(data)

            if not resource_compare(resource, merged_data):
                # update resource
                changed = True
                resource = self.oneview_client.datacenters.update(merged_data)
                msg = DATACENTER_UPDATED
            else:
                msg = DATACENTER_ALREADY_UPDATED

        return changed, msg, dict(datacenter=resource)
示例#8
0
    def __update_settings(self, resource, data):
        self.__validate_settings(data)

        ethernet_settings_merged = self.__merge_network_settings('ethernetSettings', resource, data)
        fcoe_settings_merged = self.__merge_network_settings('fcoeSettings', resource, data)

        if resource_compare(resource['ethernetSettings'], ethernet_settings_merged) and \
                resource_compare(resource['fcoeSettings'], fcoe_settings_merged):

            self.module.exit_json(changed=False,
                                  msg=LOGICAL_INTERCONNECT_NO_CHANGES_PROVIDED)
        else:
            settings = {
                'ethernetSettings': ethernet_settings_merged,
                'fcoeSettings': fcoe_settings_merged
            }
            li = self.oneview_client.logical_interconnects.update_settings(resource['uri'], settings)
            return True, LOGICAL_INTERCONNECT_SETTINGS_UPDATED, dict(logical_interconnect=li)
    def __update(self, data, existent_resource):
        if 'newName' in data:
            data['name'] = data.pop('newName')

        resource_to_update = existent_resource.copy()
        resource_to_update.update(data)

        if resource_compare(existent_resource, resource_to_update):
            return False, UPLINK_SET_ALREADY_EXIST, existent_resource
        else:
            updated_uplink = self.oneview_client.uplink_sets.update(resource_to_update)
            return True, UPLINK_SET_UPDATED, updated_uplink
示例#10
0
    def __update_ethernet_settings(self, resource, data):
        self.__validate_options('ethernetSettings', data)

        ethernet_settings_merged = resource['ethernetSettings'].copy()
        ethernet_settings_merged.update(data['ethernetSettings'])

        if resource_compare(resource['ethernetSettings'], ethernet_settings_merged):
            self.module.exit_json(changed=False,
                                  msg=LOGICAL_INTERCONNECT_NO_CHANGES_PROVIDED)
        else:
            li = self.oneview_client.logical_interconnects.update_ethernet_settings(resource['uri'],
                                                                                    ethernet_settings_merged)
            return True, LOGICAL_INTERCONNECT_ETH_SETTINGS_UPDATED, dict(logical_interconnect=li)
    def __update(self, data, resource):
        if "newName" in data:
            data['name'] = data.pop('newName')

        merged_data = resource.copy()
        merged_data.update(data)

        is_equal = resource_compare(resource, merged_data)

        if not is_equal:
            return True, UNMANAGED_DEVICE_UPDATED, self.resource_client.update(merged_data)
        else:
            return False, NOTHING_TO_DO, resource
示例#12
0
    def __update_port_monitor(self, uri, data):
        self.__validate_options('portMonitor', data)

        monitor_config = self.__get_port_monitor_configuration(uri)
        monitor_config_merged = self.__merge_options(data['portMonitor'], monitor_config)

        if resource_compare(monitor_config_merged, monitor_config):
            return False, LOGICAL_INTERCONNECT_NO_CHANGES_PROVIDED, None
        else:
            monitor_config_updated = self.oneview_client.logical_interconnects.update_port_monitor(
                uri, monitor_config_merged)
            result = dict(port_monitor=monitor_config_updated)
            return True, LOGICAL_INTERCONNECT_PORT_MONITOR_UPDATED, result
示例#13
0
    def __update(self, data, resource):
        merged_data = resource.copy()
        merged_data.update(data)

        changed = False
        msg = RACK_ALREADY_EXIST

        if not resource_compare(resource, merged_data):
            resource = self.oneview_client.racks.update(merged_data)
            changed = True
            msg = RACK_UPDATED

        return changed, msg, resource
示例#14
0
    def __update(self, data, existent_resource):
        if 'newName' in data:
            data['name'] = data.pop('newName')

        resource_to_update = existent_resource.copy()
        resource_to_update.update(data)

        if resource_compare(existent_resource, resource_to_update):
            return False, UPLINK_SET_ALREADY_EXIST, existent_resource
        else:
            updated_uplink = self.oneview_client.uplink_sets.update(
                resource_to_update)
            return True, UPLINK_SET_UPDATED, updated_uplink
    def __update(self, data, resource):
        merged_data = resource.copy()
        merged_data.update(data)

        changed = False
        msg = RACK_ALREADY_EXIST

        if not resource_compare(resource, merged_data):
            resource = self.oneview_client.racks.update(merged_data)
            changed = True
            msg = RACK_UPDATED

        return changed, msg, resource
示例#16
0
    def __update(self, data, resource):
        if "newName" in data:
            data['name'] = data.pop('newName')

        merged_data = resource.copy()
        merged_data.update(data)

        is_equal = resource_compare(resource, merged_data)

        if not is_equal:
            return True, UNMANAGED_DEVICE_UPDATED, self.resource_client.update(
                merged_data)
        else:
            return False, NOTHING_TO_DO, resource
示例#17
0
    def __update_snmp_configuration(self, uri, data):
        self.__validate_options('snmpConfiguration', data)

        snmp_config = self.__get_snmp_configuration(uri)
        snmp_config_merged = self.__merge_options(data['snmpConfiguration'], snmp_config)

        if resource_compare(snmp_config_merged, snmp_config):

            return False, LOGICAL_INTERCONNECT_NO_CHANGES_PROVIDED, None
        else:
            snmp_config_updated = self.oneview_client.logical_interconnects.update_snmp_configuration(
                uri, snmp_config_merged)

            return True, LOGICAL_INTERCONNECT_SNMP_UPDATED, dict(snmp_configuration=snmp_config_updated)
    def __update_connection_template(self, ethernet_network, bandwidth):

        if 'connectionTemplateUri' not in ethernet_network:
            return False, None

        connection_template = self.oneview_client.connection_templates.get(ethernet_network['connectionTemplateUri'])

        merged_data = connection_template.copy()
        merged_data.update({'bandwidth': bandwidth})

        if not resource_compare(connection_template, merged_data):
            connection_template = self.oneview_client.connection_templates.update(merged_data)
            return True, connection_template
        else:
            return False, None
    def __update(self, data, template):
        resource = template.copy()
        resource.update(data)
        equal = resource_compare(template, resource)

        if equal:
            msg = TEMPLATE_ALREADY_EXIST
        else:
            resource = self.resource_client.update(resource=resource,
                                                   id_or_uri=resource["uri"])
            msg = TEMPLATE_UPDATED

        changed = not equal

        return changed, msg, resource
示例#20
0
    def __update_qos_configuration(self, uri, data):
        self.__validate_options('qosConfiguration', data)

        qos_config = self.__get_qos_aggregated_configuration(uri)
        qos_config_merged = self.__merge_options(data['qosConfiguration'], qos_config)

        if resource_compare(qos_config_merged, qos_config):

            self.module.exit_json(changed=False,
                                  msg=LOGICAL_INTERCONNECT_NO_CHANGES_PROVIDED)
        else:
            qos_config_updated = self.oneview_client.logical_interconnects.update_qos_aggregated_configuration(
                uri, qos_config_merged)

            return True, LOGICAL_INTERCONNECT_QOS_UPDATED, dict(qos_configuration=qos_config_updated)
    def __update(self, new_data, existent_resource):
        merged_data = existent_resource.copy()
        merged_data.update(new_data)

        changed = False
        if "configurationScript" in merged_data:
            changed = self.__update_script(merged_data)

        if not resource_compare(existent_resource, merged_data):
            # update resource
            changed = True
            existent_resource = self.oneview_client.enclosure_groups.update(merged_data)

        self.module.exit_json(changed=changed,
                              msg=ENCLOSURE_GROUP_UPDATED if changed else ENCLOSURE_GROUP_ALREADY_EXIST,
                              ansible_facts=dict(enclosure_group=existent_resource))
    def __update(self, new_data, existent_resource):
        merged_data = existent_resource.copy()
        merged_data.update(new_data)

        if resource_compare(existent_resource, merged_data):

            self.module.exit_json(changed=False,
                                  msg=FCOE_NETWORK_ALREADY_EXIST,
                                  ansible_facts=dict(fcoe_network=existent_resource))

        else:
            updated_fcoe_network = self.oneview_client.fcoe_networks.update(merged_data)

            self.module.exit_json(changed=True,
                                  msg=FCOE_NETWORK_UPDATED,
                                  ansible_facts=dict(fcoe_network=updated_fcoe_network))
    def __update(self, data, resource):
        merged_data = resource.copy()
        merged_data.update(data)
        changed = False

        if resource_compare(resource, merged_data):
            changed = False
            msg = MANAGED_SAN_NO_CHANGES_PROVIDED
        else:
            changed = True
            resource = self.oneview_client.managed_sans.update(resource['uri'], data)
            msg = MANAGED_SAN_UPDATED

        return dict(changed=changed,
                    msg=msg,
                    ansible_facts=dict(managed_san=resource))
    def __update_connection_template(self, ethernet_network, bandwidth):

        if 'connectionTemplateUri' not in ethernet_network:
            return False, None

        connection_template = self.oneview_client.connection_templates.get(
            ethernet_network['connectionTemplateUri'])

        merged_data = connection_template.copy()
        merged_data.update({'bandwidth': bandwidth})

        if not resource_compare(connection_template, merged_data):
            connection_template = self.oneview_client.connection_templates.update(
                merged_data)
            return True, connection_template
        else:
            return False, None
    def __update(self, data, resource):
        merged_data = resource.copy()
        merged_data.update(data)
        changed = False

        if resource_compare(resource, merged_data):
            changed = False
            msg = MANAGED_SAN_NO_CHANGES_PROVIDED
        else:
            changed = True
            resource = self.oneview_client.managed_sans.update(
                resource['uri'], data)
            msg = MANAGED_SAN_UPDATED

        return dict(changed=changed,
                    msg=msg,
                    ansible_facts=dict(managed_san=resource))
示例#26
0
    def __update(self, new_data, existent_resource):
        if "newName" in new_data:
            new_data["name"] = new_data["newName"]
            del new_data["newName"]

        merged_data = existent_resource.copy()
        merged_data.update(new_data)

        if not resource_compare(existent_resource, merged_data):
            # update resource
            existent_resource = self.oneview_client.logical_enclosures.update(
                merged_data)
            return True, LOGICAL_ENCLOSURE_UPDATED, dict(
                logical_enclosure=existent_resource)
        else:
            return False, LOGICAL_ENCLOSURE_ALREADY_UPDATED, dict(
                logical_enclosure=existent_resource)
    def __update(self, data, resource):
        merged_data = resource.copy()
        merged_data.update(data)

        if resource_compare(resource, merged_data):

            self.module.exit_json(changed=False,
                                  msg=FC_NETWORK_ALREADY_EXIST,
                                  ansible_facts=dict(fc_network=resource))

        else:
            updated_fc_network = self.oneview_client.fc_networks.update(
                merged_data)

            self.module.exit_json(
                changed=True,
                msg=FC_NETWORK_UPDATED,
                ansible_facts=dict(fc_network=updated_fc_network))
示例#28
0
    def __update(self, new_data, existent_resource):
        merged_data = existent_resource.copy()
        merged_data.update(new_data)

        changed = False
        if "configurationScript" in merged_data:
            changed = self.__update_script(merged_data)

        if not resource_compare(existent_resource, merged_data):
            # update resource
            changed = True
            existent_resource = self.oneview_client.enclosure_groups.update(
                merged_data)

        self.module.exit_json(
            changed=changed,
            msg=ENCLOSURE_GROUP_UPDATED
            if changed else ENCLOSURE_GROUP_ALREADY_EXIST,
            ansible_facts=dict(enclosure_group=existent_resource))
    def __update(self, data, resource):
        merged_data = resource.copy()
        merged_data.update(data)

        if resource_compare(resource, merged_data):

            self.module.exit_json(
                changed=False,
                msg=LIG_ALREADY_EXIST,
                ansible_facts=dict(logical_interconnect_group=resource))

        else:
            updated_lig = self.oneview_client.logical_interconnect_groups.update(
                merged_data)

            self.module.exit_json(
                changed=True,
                msg=LIG_UPDATED,
                ansible_facts=dict(logical_interconnect_group=updated_lig))
示例#30
0
    def __update(self, provider_uri, resource, data):
        merged_data = resource.copy()
        merged_data.update(data)

        # If connectionInfo is not provided, its removed because the password is required for update.
        if 'connectionInfo' not in data:
            merged_data.pop('connectionInfo')

        if resource_compare(resource, merged_data):

            self.module.exit_json(changed=False,
                                  msg=SAN_MANAGER_ALREADY_EXIST,
                                  ansible_facts=dict(san_manager=resource))
        else:
            san_manager = self.oneview_client.san_managers.update(resource=merged_data,
                                                                  id_or_uri=resource['uri'])

            self.module.exit_json(changed=True,
                                  msg=SAN_MANAGER_UPDATED,
                                  ansible_facts=dict(san_manager=san_manager))
    def __update(self, data, resource):
        if 'newName' in data:
            if self.__get_by_name(data['newName']):
                raise Exception(NETWORK_SET_NEW_NAME_INVALID)
            data['name'] = data.pop('newName')

        merged_data = resource.copy()
        merged_data.update(data)

        if resource_compare(resource, merged_data):

            self.module.exit_json(changed=False,
                                  msg=NETWORK_SET_ALREADY_EXIST,
                                  ansible_facts=dict(network_set=resource))

        else:
            updated_network_set = self.oneview_client.network_sets.update(merged_data)

            self.module.exit_json(changed=True,
                                  msg=NETWORK_SET_UPDATED,
                                  ansible_facts=dict(network_set=updated_network_set))
示例#32
0
    def __present(self, data, resource):

        server_template_name = data.pop('server_template', '')
        server_hardware_name = data.pop('server_hardware', '')
        server_template = None
        changed = False
        created = False

        if server_hardware_name:
            selected_server_hardware = self.__get_server_hardware_by_name(server_hardware_name)
            if not selected_server_hardware:
                raise ValueError(HARDWARE_NOT_FOUND.format(server_hardware_name))
            data['serverHardwareUri'] = selected_server_hardware['uri']

        if server_template_name:
            server_template = self.oneview_client.server_profile_templates.get_by_name(server_template_name)
            if not server_template:
                raise ValueError(TEMPLATE_NOT_FOUND.format(server_template_name))
            data['serverProfileTemplateUri'] = server_template['uri']
        elif data.get('serverProfileTemplateUri'):
            server_template = self.oneview_client.server_profile_templates.get(data['serverProfileTemplateUri'])

        if not resource:
            resource = self.__create_profile(data, server_template)
            changed = True
            created = True
            msg = SERVER_PROFILE_CREATED
        else:
            merged_data = deepcopy(resource)
            merged_data.update(data)
            if not resource_compare(resource, merged_data):
                resource = self.__update_server_profile(merged_data)
                changed = True
                msg = SERVER_PROFILE_UPDATED
            else:
                msg = SERVER_ALREADY_UPDATED

        return created, changed, msg, resource
    def __update(self, data, resource):
        if 'newName' in data:
            if self.__get_by_name(data['newName']):
                raise Exception(NETWORK_SET_NEW_NAME_INVALID)
            data['name'] = data.pop('newName')

        merged_data = resource.copy()
        merged_data.update(data)

        if resource_compare(resource, merged_data):

            self.module.exit_json(changed=False,
                                  msg=NETWORK_SET_ALREADY_EXIST,
                                  ansible_facts=dict(network_set=resource))

        else:
            updated_network_set = self.oneview_client.network_sets.update(
                merged_data)

            self.module.exit_json(
                changed=True,
                msg=NETWORK_SET_UPDATED,
                ansible_facts=dict(network_set=updated_network_set))
    def __present(self, data, resource):

        changed = False
        msg = ''

        if not resource:
            raise Exception(CONNECTION_TEMPLATE_NOT_FOUND)
        else:
            if 'newName' in data:
                data['name'] = data.pop('newName')

            merged_data = resource.copy()
            merged_data.update(data)

            if not resource_compare(resource, merged_data):
                # update resource
                changed = True
                resource = self.oneview_client.connection_templates.update(
                    merged_data)
                msg = CONNECTION_TEMPLATE_UPDATED
            else:
                msg = CONNECTION_TEMPLATE_ALREADY_UPDATED

        return changed, msg, dict(connection_template=resource)
    def __present(self, data, resource):

        changed = False

        if "newName" in data:
            data["name"] = data.pop("newName")

        if not resource:
            resource = self.oneview_client.power_devices.add(data)
            changed = True
            msg = POWER_DEVICE_ADDED
        else:
            merged_data = resource.copy()
            merged_data.update(data)

            if not resource_compare(resource, merged_data):
                # update resource
                changed = True
                resource = self.oneview_client.power_devices.update(merged_data)
                msg = POWER_DEVICE_UPDATED
            else:
                msg = POWER_DEVICE_ALREADY_PRESENT

        return changed, msg, dict(power_device=resource)