fog / fog-azure-rm Goto Github PK
View Code? Open in Web Editor NEWFog for Azure Resource Manager
License: MIT License
Fog for Azure Resource Manager
License: MIT License
The request to create virtual machine should be updated to include caching type of os_disk as an optional parameter.
@zeeshan-arshad-confiz, which is using 'compare_blob'?
I am refining storage part so I am considering to remove it if it is not used.
Who wants to use this function can use directories.get('c1').files and directories.get('c2').files to compare blobs easily.
I saw you added the support for getting/setting blob metadata. I am going to work on the functions of uploading/downloading block blobs. Does it conflicts with the plan in your team?
Check storage account name availability needs to be implemented correctly. Consumer of fog should not pass an SDK object to the request. Instead only name and type of storage account should be passed.
I'm trying to determine the right gem to help our team incorporate Azure into our devops app but I see several Azure gems out there and not entirely sure of the right choice.
After going over several gems, it looks like the fog-azure gem is deprecated. Is Fog-azure-rm gem the replacement for the fog-azure gem?
Microsoft seems to have their own Azure sdk gem. Issues 229 and 232 reference the Azure SDK so I'm not sure what the relationship of the Azure SDK and this gem. Is this gem still actively being developed to support Azure?
Hi @geemus,
I hope you are doing great, please add following github users as repo members.
dandagopi, rameshjanjyam, sleepyorion, azeem-sajid-confiz, muhammad-asad-confiz, maham-nazir-confiz
Thanks,
line 41 of lib/fog/azurerm/models/compute/server.rb assumes that the machine is a linux box and breaks if retrieving details of a windows host.
Current code:
hash['disable_password_authentication'] = vm['properties']['osProfile']['linuxConfiguration']['disablePasswordAuthentication']
Proposed "Quick Fix"
if vm['properties']['osProfile']['linuxConfiguration']
hash['disable_password_authentication'] = vm['properties']['osProfile']['linuxConfiguration']['disablePasswordAuthentication']
else
hash['disable_password_authentication'] = false
end
A while back I requested to allow creating a VM asynchronously. Can we add the sync feature to all the other methods such as deallocate, stop, delete, etc. as shown here https://github.com/fog/fog-azure-rm/blob/master/lib/fog/azurerm/models/compute/server.rb? It seems to me that the async methods are available on the Azure SDK.
Unless I'm missing something, I don't think it is currently possible to use this library to create a VM with a managed disk for the OS disk, is this a planned feature?
Verify if all the unit tests are working by running the tests
The unit tests were failing when running them via Rake task. Identify and fix the issue.
@samawia-moin-confiz Should not upload_block_blob_from_file use to upload a disk. Please create a new request to upload the disk, for example, upload_page_blob_from_file.
https://github.com/fog/fog-azure-rm/blob/master/lib/fog/azurerm/requests/storage/create_disk.rb#L12
disk = upload_block_blob_from_file('vhds', "#{blob_name}.vhd", path.to_s, options)
NIC isn't handling update in load balancer attributes.
Add support for Azure Managed Disk in Fog-ARM.
You can find Azure Managed Disk
SDK here
You can find Azure Managed Disk
API here
We should do following in this ticket:
Rubocop
Are you planning to add support for VHDs management. Would be very handy to be able to list, delete vhds.
I am using this library in Foreman Azure RM
to add ARM as a compute resource for The Foreman. Foreman's current fog-core version is pegged at 1.42.0, and this library's fog-core version is pegged to ~> 1.43.0, which is somewhat problematic for development.
The changelog for fog-core to 1.43 does not seem to mention anything which would affect this library, and I would like to know if you would consider downgrading your fog-core dependency to ~> 1.42.0 or something similar to allow for compatibility with The Foreman
Check exists of storage account should be changed to check the provisioning state of the object.
following this example to create a network interface with a public ip:
nic = azure_network_service.network_interfaces.create(
name: '<Network Interface name>',
resource_group: '<Resource Group name>',
location: 'eastus',
subnet_id: '/subscriptions/<Subscriptionid>/resourceGroups/<Resource Group name>/providers/Microsoft.Network/virtualNetworks/<Virtual Network name>/subnets/<Subnet name>',
ip_configuration_name: '<Ip Configuration Name>',
private_ip_allocation_method: 'Dynamic'
)
Even though we are passing in a per-configured "ip_configuration_name" the Network Interface in the Azure console shows that Public IP addresses are disabled, we have to manually enable and assign the Public IP resource.
Update Traffic Manager Profile create method to receive and create Endpoints with it.
Currently we have implemented requests to add 'exists' functionality in Fog-ARM. These request files contains '?' as part of their names. Windows OS doesn't allow us to create a file name having special character in the file name. So Windows users will be unable to pull this latest change.
Please update request file names having special characters in their names.
@abbas-sheikh-confiz storage in v0.1.1 only supports AzureCloud
. Later we will add support for AzureChinaCloud
, AzureUSGovernment
and AzureGermanCloud
.
To keep consistent with azure-cli and azure-powershell, I think we should use same names for these environments.
environment
in options
to use different Azure cloud environmentenvironment
should be one of AzureCloud
, AzureChinaCloud
, AzureUSGovernment
orAzureGermanCloud
.So below code in this link should be updated. How do you think?
# Set a CLOUD value from 'Azure', 'AzureChina', 'AzureGermanCloud' and 'AzureUSGovernment'
CLOUD = 'Azure'.freeze
Documentation for compute has some typos.
As sql server and sql databases are using rest client calls for api calling, and some of the responses have been changed for sql databases, due to which parsing is breaking for sql databses so i suggest we should move sql server and sql databases to azure sdk 0.8.0, as they have added the support of sql in SDK.
Remove unnecessary required attributes from Application Gateway and add some necessary attributes in it.
subnet_id
attribute in AG frontend_ip_configuration
id
attribute in all objects(listener, ssl_certificate) under application gateway.fronend_ip_config
validation in model/application_gateway/gateway.rb file.backend_http_settings
validation in model/application_gateway/gateway.rb file.If I did not understand the implementation correctly I apologize in advance. It seems that only one NIC is allowed to be configured when creating a VM. And a custom one in particular. Perhaps this ticket offers an opportunity further the this great implementation.
Presently, Fog ARM does not allow to attach managed data disk to a VM.
Add support to attach managed DD to VM.
Hi @geemus ,
Please include following github users as repo members.
bilal-naeem-confiz, waqar-haider-confiz
Regards,
Create Fog Models for Azure SDK Enums to be used in the entire code-base instead of using strings
Fog ARM currently does not support checking for existence of a resource, however this feature will be used in future. Implement "exists" request for all the Fog ARM resource.
Hello,
is it possible to check the status of virtual machine and determine if it is Powered on or Powered off using this gem?
I saw you added the support for getting/setting blob metadata. I am going to work on the functions of getting/setting blob properties. Does it conflicts with the plan in your team?
Hey, since there is support for managing storage accounts, I am going to add support for the Azure storage blob features in this gem.
The storage client will be created by:
azure_storage_client = Fog::Storage.new({
:provider => 'AzureRM',
:azure_storage_account_name => YOUR_AZURE_STORAGE_ACCOUNT_NAME,
:azure_storage_access_key => YOUR_AZURE_STORAGE_ACCESS_KEY
})
The APIs I am going to work on are:
azure_storage_client.create_container
azure_storage_client.delete_container
azure_storage_client.get_container_properties
azure_storage_client.create_block_blob
azure_storage_client.get_blob
azure_storage_client.delete_blob
azure_storage_client.get_blob_properties
If you don't have concern, I will start coding and submit PR later. Thanks.
+@devigned for awareness
Currently if we use fog (full addons) or fog-aws together with fog-azure will cause this error.
Because fog (full version) and others fog addons use fog-json to standardize the JSON encode/decode. So Fog::JSON.parse will use fog-json and this module doesn't have parse method. It raises NameError: undefined method and will be rescued and re-raise with Fog::Service::NotFound, "#{provider} has no #{service_name.downcase} service".
The quick fix is replacing allJSON.parse to ::JSON.parse.
IMHO we should use fog-json with the method Fog::JSON.decode instead of ::JSON.parse since it's more standard in fog services (fog-aws, fog-azure, fog-google...)
Implement missing request in Load Balancer:
We're trying to make it possible to use azure storage the same way we use AWS or GCP, which is documented at http://fog.io/storage/. Unfortunately the methods and objects in the azure storage models don't match the other Fog providers. Would it be possible to implement the standard directories
and files
concept? A proposed set of API calls would be like so:
azure_storage_service = Fog::Storage.new(
:provider => 'AzureRM',
:azure_storage_account_name => '<StorageAccountName>' # Name of an Azure Storage Account
:azure_storage_access_key => '<StorageAccountKey>' # Key of an Azure Storage Account
)
azure_storage_service.directories # should list a bunch of blob "containers"
azure_storage_service.directories.create('newcontainer') # should make a container
azure_storage_service.directories.get('mycontainer').files # should list blobs
azure_storage_service.directories.get('mycontainer').files.create(
key: 'some/path/file.txt',
body: File.open('localfile.txt'),
public: true|false
) # should upload a blob
azure_storage_service.directories.get('mycontainer').files.all # returns all blobs
azure_storage_service.directories.get('mycontainer', prefix: 'some/path').files # returns all blobs under some/path
azure_storage_service.directories.get('mycontainer').files.head('some/path/file.txt') # returns a File object but doesn't download it
azure_storage_service.directories.get('mycontainer').files.get('some/path/file.txt') # returns a File object and downloads its body
azure_storage_service.directories.get('mycontainer').files.head('some/path/file.txt').public_url(Time.now + 3600) # returns a signed URL good for anonymous download for the next hour
azure_storage_service.directories.get('mycontainer').files.get('some/path/file.txt').destroy # delete a blob
I know it's a lot of work to change the API, but this would allow you to be used with codebases that are used to using Rackspace, Openstack, GCP, AWS, etc. What you all think?
Currently, Fault domain and update domain handling is hard-coded in availability set. We need to add support to FD and UD based on region in availability set.
Hello. AzureRM fog currently does not support for creating a deployment with template body. It is only possible with the template link. Is there any way to create a deployment with template body by using ARM template's relative file path? Or Are you planning to add this feature?
Thank you.
In Fog ARM, while creating availability set we are ONLY creating un-managed availability set(default). When we add a managed OS disk VM to this availability set, we are getting following error
Addition of a VM with managed disks to non-managed Availability Set or addition of a VM with blob based disks to managed Availability Set is not supported. Please create an Availability Set with 'Aligned' SKU in order to add a VM with managed disks to it. Type: MsRestAzure::AzureOperationError
Add option to create managed availability set as well so that managed OS disk VMs can be added to it. Here is the relevant API link
Currently, Recovery Vault is using REST client calls for API calls, because Azure SDK did not provide support for Recovery Vault. Now, support for Recovery Vault has been added as a separate gem azure_mgmt_recovery_services
. Recovery Vault needs to be moved to use the SDK calls provided in the gem instead of REST client calls.
Currently, resource tagging is available after a resource has been created. We need to add support for resource tagging while a resource is being created.
Currently we are using SDK models for string values such as Azure::ARM::Network::Models::IPAllocationMethod::Dynamic
. We should create Fog models for each of these SDK models.
Currently get virtual machine in fog is not returning storage account name in vm object. Modify the code to return storage account name.
I am unable to assign a network security group to a network interface card.
Need to fix it so I can assign any security group to a network interface.
I looked over the source code for creating the VM. It looks like the method create_or_update
was used instead of create_or_update_async
. I think if this method (create_virtual_machine
) is used on an application, it would create a delay after hitting the submit button (correct me if I'm wrong) before the web application can be redirected to another page.
If there is an option to create_or_update_async
, it would create the VM and then allow us to use the promise feature detailed at azure computer sdk doc and also allow us to handle any errors. Is there an option to create or update the VM asynchronously (e.g. create_virtual_machine_async
)? if not, can that feature be added in the next release?
Implement missing request in Load Balancer:
The Server creation requires a public IP configuration, there are a number of use cases where VM's should not have a public IP address.
Can this be made optional
In the service key_vault
, the model AccessPolicyEntry
should not have a save
method. Update the model and remove the said method.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.